mcpField
T
transformers-huggingface

transformers-huggingface

github.com/mindrally開発287762 回インストール3 週間前に更新
リポジトリ

transformers-huggingface について

Hugging Face エコシステムを扱う開発者向けのスキルガイドです。Transformer モデルの読み込み、データ準備、ファインチューニング、推論、Hub の利用を Python の実践に沿って扱います。

主な機能

  1. 01モデルとトークナイザーの読み込み
  2. 02データセットの準備とバッチ化
  3. 03Trainer による微調整
  4. 04LoRA と QLoRA の手法
  5. 05推論とテキスト生成の実践
  6. 06Model Hub への公開方法

活用シーン

  1. 01再現可能なモデル読み込みの設定
  2. 02メモリ制約下でのモデル微調整
  3. 03学習用データセットの準備
  4. 04バッチ推論の最適化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mindrally/skills --skill transformers-huggingface

インストール後、Claude Code で/transformers-huggingfaceを入力して読み込まれたか確認します。

詳細

Transformers と Hugging Face の開発

Transformers、Datasets、Tokenizers、および機械学習関連ライブラリを含む Hugging Face エコシステムに精通しています。

主な原則

  • 正確な Python の例を用いて、簡潔で技術的な回答を作成します
  • Transformer ワークフローでは、明確さ、効率性、ベストプラクティスを優先します
  • Hugging Face API を一貫して、慣用的に使用します
  • 適切なモデルの読み込み、ファインチューニング、推論のパターンを実装します
  • モデルの各コンポーネントを反映した、わかりやすい変数名を使用します
  • Python コードでは PEP 8 スタイルガイドラインに従います

モデルの読み込みと設定

  • 柔軟にモデルを読み込むため、AutoModel と AutoTokenizer を使用します
  • 再現性を確保するため、モデルのリビジョン/コミットハッシュを指定します
  • AutoConfig を使用してモデル設定を適切に扱います
  • タスクに適したモデルクラス(ForSequenceClassification、ForTokenClassification など)を使用します
  • 適切なデバイス配置(CPU、CUDA、MPS)を実装します

トークナイズのベストプラクティス

  • 適切なパラメーターを指定して、トークナイザーの __call__ メソッドを使用します
  • パディングと切り詰めを一貫して処理します
  • フレームワークとの互換性のため、return_tensors パラメーターを使用します
  • アテンションマスクを適切に処理します
  • 各モデルファミリーに応じて、特殊トークンを正しく扱います
# Example tokenization pattern
inputs = tokenizer(
    texts,
    padding=True,
    truncation=True,
    max_length=512,
    return_tensors="pt"
)

Trainer API によるファインチューニング

  • 標準的な学習ワークフローには Trainer クラスを使用します
  • 設定用の TrainingArguments をカスタム実装します
  • 適切な評価戦略とメトリクスを使用します
  • ロギングと早期終了のためのコールバックを実装します
  • チェックポイントとモデルの保存を正しく扱います
# Example Trainer setup
training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    learning_rate=2e-5,
    per_device_train_batch_size=16,
    num_train_epochs=3,
    weight_decay=0.01,
    save_strategy="epoch",
    load_best_model_at_end=True,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    tokenizer=tokenizer,
    compute_metrics=compute_metrics,
)

データセットの処理

  • 効率的なデータ読み込みには datasets ライブラリを使用します
  • データセットのマッピングとバッチ処理を適切に実装します
  • 大規模データセットにはデータセットのストリーミングを使用します
  • データセットのキャッシュを適切に扱います
  • 必要に応じてカスタムデータコレーターを実装します

効率的なファインチューニング手法

  • パラメーター効率の高いファインチューニングには LoRA(Low-Rank Adaptation)を使用します
  • メモリ効率の高い学習には QLoRA を実装します
  • メモリ使用量を削減するため、勾配チェックポイントを使用します
  • 混合精度学習(fp16/bf16)を適用します
  • 実効バッチサイズを大きくするため、勾配累積を実装します

推論の最適化

  • 推論では model.eval() と torch.no_grad() を使用します
  • スループット向上のため、バッチ推論を実装します
  • 一般的なタスクには pipeline API を使用します
  • 推論を高速化するため、モデル量子化(int8、int4)を適用します
  • 利用可能な場合は Flash Attention を使用します
# Example inference pattern
model.eval()
with torch.no_grad():
    outputs = model(**inputs)
    predictions = outputs.logits.argmax(dim=-1)

Model Hub との連携

  • 適切なモデルカードのドキュメントを作成します
  • タグを使用してモデルのバージョン管理を実装します
  • プライベートモデルと認証を扱います
  • モデルを共有するには push_to_hub を使用します
  • 適切なライセンスと帰属表示を実装します

テキスト生成

  • 生成パラメーターには GenerationConfig を使用します
  • 適切な停止条件を実装します
  • 必要に応じて制約付き生成を使用します
  • 応答性の高い UI のため、ストリーミング生成を扱います
  • 適切なデコード戦略を適用します
# Example generation pattern
generation_config = GenerationConfig(
    max_new_tokens=100,
    do_sample=True,
    temperature=0.7,
    top_p=0.9,
    repetition_penalty=1.1,
)

outputs = model.generate(
    **inputs,
    generation_config=generation_config,
)

マルチモーダルモデル

  • 視覚言語モデルには適切なプロセッサーを使用します
  • 画像の前処理を正しく扱います
  • 適切な特徴抽出を実装します
  • マルチモーダル入力には AutoProcessor を使用します

エラー処理と検証

  • モデルの読み込みエラーを適切に処理します
  • モデル推論の前にトークナイザーの出力を検証します
  • OOM エラー処理を適切に実装します
  • Hub 操作には try-except を使用します
  • 非推奨機能について警告をログに記録します

依存関係

  • transformers
  • datasets
  • tokenizers
  • accelerate
  • peft(LoRA 用)
  • bitsandbytes(量子化用)
  • safetensors
  • evaluate

主な規約

  1. 再現性を確保するため、必ずモデルのリビジョンを指定します
  2. モデルの重みには適切な dtype(float32、float16、bfloat16)を使用します
  3. 各モデルファミリーに応じて、パディング側を正しく扱います
  4. モデルの要件と制限事項を文書化します
  5. 学習と推論で一貫した前処理を使用します
  6. 大規模モデルに対して適切なメモリ管理を実装します

ベストプラクティスやモデル固有のガイドラインについては、Hugging Face のドキュメントとモデルカードを参照してください。

コメント