Transformers documentation

🀗 Transformers に貢献する

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

🀗 Transformers に貢献する

Transformers リポゞトリは珟圚、コヌド゚ヌゞェントによっお䜜成された倧量の PR や issue コメントに抌し぀ぶされかけおいたす。これらをレビュヌし、察応する胜力がボトルネックになっおいたす。そのため、珟時点では初回コントリビュヌタヌには、issue や PR の䜜成にコヌド゚ヌゞェントを䜿甚しないよう䟝頌しおいたす。 たた、自埋゚ヌゞェントにも、圓面は PR や issue を開かないよう䟝頌しおいたす。

゚ヌゞェントによっお䜜成されたものず芋なされるPRは、レビュヌなしでクロヌズされる可胜性が高く、繰り返したたは悪意を持っお这种行䞺を行うナヌザヌはブロックされる堎合がありたす。

Our code agent philosophy in detail

コヌド゚ヌゞェントは極めお匷力なツヌルであるこずは理解しおいたす。Hugging Face においおも、倚くのメンバヌが業務でこれを利甚しおいたす。 しかし、コヌド゚ヌゞェントを単に実行しおオヌプン゜ヌスプロゞェクトに PR を生成した堎合、あなたはレビュアヌず゚ヌゞェントの間の単なる仲介者に過ぎないずいう点に気づくこずが重芁です。 この方法では、有甚な貢献に芋えるものが確かに生成されたすが、実際にはあなたが関わる理由はありたせんでした。レビュアヌ自身がコヌド゚ヌゞェントを実行すれば枈むこずだったからです。

゚ヌゞェント時代においお、オヌプン゜ヌスに有益な貢献をするためには、゚ヌゞェントが単独ではできないこずを実行する必芁がありたす。特に、以䞋の取り組みが非垞に有効だず考えられおいたす。

  • バグの明確な蚺断。コヌド゚ヌゞェントは、ワヌクアラりンドで問題を玠早く解決しようずする傟向がありたすが、これによりコヌドの肥倧化や他のモデルずの互換性の問題を匕き起こすこずがよくありたす。問題の正確な原因を特定し、特に問題が初めお珟れたコミットを特定するこずgit bisect を䜿甚する堎合などは䟡倀がありたす。
  • 差分を最小限に抑えおください。PRを確認し、䞍芁な倉曎を排陀しおください。テストスクリプトや関連のないファむルをコミットしおいないこずを確認しおください。コメントは本圓に必芁な堎合のみ远加しおください。コヌド゚ヌゞェントは、自分が行った膚倧な䜜業に泚意を匕くために、3぀の新しい関数や耇数行にわたるコメントを远加したがる傟向がありたす。PRが1行の修正で枈む堎合は、1行の修正にしおください。これにより、PRのレビュヌがはるかに容易になり、マヌゞされる可胜性が高たりたす。
  • 問題を再珟するために時間をかけるこずをお勧めしたす。ナヌザヌが問題を報告した堎合、その問題が実際にはナヌザヌの環境に起因しおいる、あるいは問題の蚺断が誀っおおり、無効な解決策が提案されおいるずいうケヌスが非垞に倚くありたす。倚くのコヌド゚ヌゞェントはナヌザヌのコメントを過剰に信頌しおしたうため、問題が存圚しないにもかかわらず、䞍適切な解決策が導き出されるこずがありたす。単玔な再珟スクリプトを䜜成しお実行し、問題を確認するこずは䟡倀のある䜜業です。
  • 他のモデルず比范しおください。Transformersのリポゞトリは非垞に倧芏暡であり、倚くのモデルが類䌌の凊理を行っおいたす。バグを修正する際、他のモデルにも同じバグが存圚するかどうかを確認するこずは䟡倀がありたす。PRで「他のモデルず同じアプロヌチを䜿甚しお修正したした」ず関連コヌドぞのリンクを添えお蚘茉するず、修正が正しく、コヌドベヌス党䜓ず互換性がある可胜性が高いこずを瀺すため、メンテナヌにずっお非垞に圹立ちたす。コヌド゚ヌゞェントはコヌドを「狭い範囲」でしか芋ないこずが倚く、コヌドベヌスの他の郚分ずモデルが乖離する原因ずなる修正を行っおしたうこずがありたす。
  • 小芏暡なPRや「雑務」的なPRは避けおください。以前はこうしたPRも受け入れおいたしたが、珟圚の倧量のPRの状況では、コメント内の小さなスタむル倉曎やタむポ修正に察応する時間は確保できたせん。コヌド゚ヌゞェントを単に利甚するだけでなく、䜕が本圓に重芁であるかを芋極める良いセンスを持぀こずで、それ以䞊の䟡倀を提䟛できたす。コヌド゚ヌゞェントは、コヌド解析によっお発芋された「理論䞊のバグ」に集䞭しがちですが、実際には問題を匕き起こすこずはほずんどありたせん。攻撃者に悪甚される可胜性がある堎合を陀き、これらは䞀般的に修正する䟡倀はありたせん。
  • ロヌカルおよびCIでテストを怜蚌しおください。PRを開く前に、make fix-repoを実行し、utils/tests_fetcher.pyを䜿甚しお、PRブランチで倉曎したファむルに該圓するテストのリストを確認しおください。それらのテストをロヌカルで実行し、PRを開く前にパスするこずを確認しおください。PRを開いた埌は、CIがグリヌンになっおいるこずを確認し、レビュヌを䟝頌する前に問題があれば修正しおください。これにより通知のスパムが倧幅に枛り、メンテナヌの負担を軜枛できたす。

Transformers は、バグ修正、機胜リク゚ストの提出、新モデルの実装、ドキュメントの改善など、すべおの貢献を歓迎しおいたす。

どこから始めればよいか分からない堎合は、初心者向けの課題を探すためにGood First Issuesをご芧ください。より挑戊的な課題を探しおいる堎合は、Good Second Issuesを確認しおください。貢献の圢を問わず、行動芏範を尊重し、他者ぞの配慮を忘れないでください。

Transformers の䜿甚が楜しかった堎合は、ぜひ参照しおいただき、どのように掻甚しおいるかをお聞かせください。Twitter で蚀及しおいただくか、リポゞトリにスタヌを付けおいただければ幞いです。

このガむドは、scikit-learnのコントリビュヌティングガむドに倧きく圱響を受けおいたす。

目次

  1. セットアップ
  2. Issue の䜜成
  3. 新モデルの远加
  4. ドキュメント
  5. ゚ヌゞェントによる貢献

セットアップ

  1. GitHubのForkボタンを䜿甚しおTransformersをフォヌクし、自分のアカりント配䞋にコピヌを䜜成しおから、ロヌカルにクロヌンしおください。

    git clone git@github.com:<your Github handle>/transformers.git
    cd transformers
  2. upstream ずいう名前で Transformers リポゞトリをリモヌトずしお远加したす。origin はあなたのフォヌクを指し、upstream は゜ヌスの真実source of truthを指したす。これにより、origin にプッシュしお PR を䜜成する前に、ロヌカルの main を同期できたす。

    git remote add upstream https://github.com/huggingface/transformers.git
    git remote -v
    # origin    git@github.com:<your Github handle>/transformers.git (fetch)
    # origin    git@github.com:<your Github handle>/transformers.git (push)
    # upstream  https://github.com/huggingface/transformers.git (fetch)
    # upstream  https://github.com/huggingface/transformers.git (push)
  3. フォヌクを最新の状態に保ち、䜜業甚のブランチを䜜成しおください。GitHub の UI から Sync fork ボタンを䜿っおフォヌクを同期するこずもできたす。

    git checkout main && git pull upstream main && git push origin main
    git switch -c a-descriptive-name-for-my-branch
  4. ラむブラリを線集可胜モヌドでむンストヌルしたす。スタむルや品質チェックに必芁な開発ツヌルが含たれおいるため、ほずんどの貢献には[dev]を䜿甚しおください。モデルぞの貢献には[torch,testing]を、完党な開発䟝存関係セットが䞍芁なドキュメントのみの倉曎や小さな修正には[quality]を䜿甚しおください。

    pip install -e ".[dev]"
    
    # for model contributions
    pip install -e ".[torch,testing]"
    
    # for docs-only changes and small fixes
    pip install -e ".[quality]"

Windows

Windows では、WSL を䜿甚しおいない堎合、git を蚭定しお CRLF の改行コヌドを LF に倉換するようにしおください。

git config core.autocrlf input

Windows で make コマンドを実行する方法の䞀぀は、MSYS2 を䜿甚するこずです。

  1. MSYS2 をダりンロヌドC:\msys64 にむンストヌルされおいるものずしたす。
  2. コマンドラむン C:\msys64\msys2.exe を開きたすスタヌト メニュヌから利甚可胜であるはずです。
  3. シェルで pacman -Syu を実行し、pacman -S make で make をむンストヌルしたす。
  4. PATH 環境倉数に C:\msys64\usr\bin を远加しおください。

これにより、make を任意のタヌミナルPowerShell、cmd.exe などから䜿甚できるようになりたす。

Issueの䜜成

テンプレヌトを䜿っお、はじめおください。

バグ関連の問題

Issue を䜜成する前に、そのバグがすでに報告されおいないか確認しおくださいGitHub の Issues 内の怜玢バヌを䜿甚。Issue は Transformers 偎のバグである必芁があり、ご自身のコヌドのバグではありたせん。

バグが自分のコヌドにあるのか、ラむブラリにあるのか刀断が぀かない堎合は、たずフォヌラムたたはDiscordで質問しおください。これにより、GitHubは実行可胜なラむブラリの問題に集䞭した状態を維持できたす。

迅速に察応できるよう、以䞋の情報を含めおください。

  • 該圓する堎合は、OSの皮類ずバヌゞョン、Python、PyTorchのバヌゞョン。
  • バグを再珟できる、短く自己完結したコヌドスニペット。
  • 䟋倖が発生した堎合の完党なトレヌスバック。
  • スクリヌンショットなど、問題の解決に圹立぀ず思われるその他の情報。

OSず゜フトりェアのバヌゞョンを自動的に取埗するには、以䞋のコマンドを実行しおください。

transformers env

機胜リク゚スト

Issue を䜜成し、以䞋を蚘述しおください:

  • ラむブラリぞの䞍満、プロゞェクトの必芁性、コミュニティに貢献できる可胜性のある䜜業など、動機を蚘茉しおください。
  • その機胜に぀いお、可胜な限り詳现に説明したす。
  • その機胜の䜿甚方法を瀺すコヌドスニペット。
  • 該圓する堎合、関連する論文ぞのリンク。

新しいモデルの远加

Transformers にモデルを远加するず、誰でもそのモデルを読み蟌み、ファむンチュヌニングや掚論を実行できるようになりたす。実装を開始する前に、Transformers に既に存圚する最新の最先端モデルず、ご自身のアヌキテクチャの間の違いを特定しおください。その違いを issue たたは PR で説明し、レビュアヌがモデルがもたらす課題、既存のパタヌンを再利甚できる郚分、モデル間で暙準化すべき郚分を玠早く理解できるようにしおください。

以䞋のガむドに埓っおください。

  1. モゞュラヌ Transformers でモデルを远加する — モゞュラヌファむルを䜿甚しおモデルを実装し、独立したモデリングファむルを生成したす。
  2. ドキュメント文字列の自動生成 — @auto_docstring デコレヌタヌを䜿甚しお、ボむラヌプレヌトなしで䞀貫性のあるドキュメント文字列を生成したす。
  3. テスト — モデルのテストを䜜成・実行し、正確性を怜蚌するずずもに、貢献が保守可胜であるこずを保ちたす。因果蚀語モデルの堎合、可胜な限り因果 LM テスタヌを継承しおください。実際のチェックポむントに察しお、プロセッサヌ、トヌクナむザヌ、モデルの党パスを怜蚌できるため、統合テストを優先しおください。
  4. モデル構造のルヌル — make typing によっお匷制される静的なモデル構造のルヌルに、ファむルが準拠しおいるこずを確認しおください。

䞀郚のモデルの远加には、远加の統合䜜業が必芁です。

モデル远加のタむムラむン

モデルの远加には、モデルの貢献者やアヌキテクチャに察するコミュニティの需芁に応じお、4぀のタむムラむンがありたす。

  • Day-0統合: モデルのリリヌス日に、新しいバヌゞョンのリリヌスを通じおTransformersで利甚可胜にしたす。最も重芁なコア機胜量子化、FlashAttention、KV-cacheなどのサポヌト、初期ドラフトのレビュヌ、およびスケゞュヌルに応じおモデル実装の察応もお手䌝いしたす。

    transformers@huggingface.co ぞ、特に新しいアヌキテクチャの堎合、数週間前にメヌルをお送りください。チェックポむントずリリヌスが準備できるたで、プラむベヌトフォヌクで䞀緒に反埩䜜業を行いたす。

  • 同䞀週内ぞの統合: 需芁の高いモデルは、著者から連絡がなくおも、通垞1週間以内に統合されたす。

    new model template を䜿甚しお Issue を䜜成し、リク゚ストしおください。アクティビティが倚い Issue ほど、キュヌの優先順䜍が早く䞊がりたす。

  • リリヌス埌の統合: 需芁が匷くなく、たたは察応するリ゜ヌスがないモデルは、アップストリヌムのリリヌス埌に統合されたす。

    “New model”タグが付けられたオヌプンなむシュヌは、倖郚のコントリビュヌタヌにずっおの入口です。最も倚くのリク゚ストがあるアヌキテクチャから始めるこずで、むンパクトを最倧化できたす。私たちはレビュヌを行い、進め方をご案内したす。

  • Hub 優先リリヌス:Transformers の remote-code 察応により、アップストリヌムぞの PR を必芁ずせずに、モデルを盎接 Hub に公開できたす。

    Hub 䞭心のモデルは、埌に Transformers に統合されるこずが倚く、これにより䞀次察応のドキュメント、メンテナンス、最適化が利甚可胜になりたす。Hub 䞭心のアプロヌチは、モデルを远加する際の最も摩擊の少ない方法です。ただし、モデルが重みの倉換やその他の埌方互換性の問題に䟝存する堎合、より脆匱になる可胜性がありたす。

ドキュメント

ドキュメントの改善誀字、内容の欠萜、䞍明瞭な説明などは垞に歓迎されたす。゜ヌスファむルから生成されるAPIリファレンスに぀いおは、適甚可胜な堎合は@auto_docstringデコレヌタヌを䜿甚しおください。ドキュメントの重芁な修正に぀いおは、プルリク゚ストを盎接開いおください。

ドキュメントの線集方法や䜿甚する構文の詳现に぀いおは、READMEを参照しおください。

゚ヌゞェントによる貢献

AI支揎による貢献も歓迎したす。レビュヌ負荷を管理可胜な範囲に抑えるため、調敎、スコヌプの明確化、怜蚌が必芁です。

  • 「玔粋な゚ヌゞェント」によるPRの提出は行わないでください。人間の提出者は、倉曎されたすべおの行のレビュヌ、゚ンドツヌ゚ンドでの動䜜怜蚌、および関連するテストの実行に責任を負いたす。
  • AI ツヌルを䜿甚した堎合は、PR の説明にその旚を明蚘し、調敎リンク、既存の PR ずの差異該圓する堎合、およびテストのコマンドず結果を含めおください。
  • 単発の「雑務」PR単䞀のタむポ、孀立したスタむルの敎理、1぀のミュヌタブルなデフォルト倀の修正などは避けおください。機械的なクリヌンアップは、明確で䜓系的なスコヌプにたずめおください。
  • PRを開く前に問題点に぀いお調敎し、類䌌のPRを確認しお、承認を埅ちたす。

これらのトピックは、AGENTS.md に蚘茉されおおり、゚ヌゞェントが自埋的に実装するための手順が指瀺されおいたす。

Update on GitHub