MLエンジニアリングのオンライン書籍
(github.com/stas00)- Machine Learning Engineering Open Bookは、LLM、VLM、RAGモデルの学習・ファインチューニング・推論を成功裏に進めるための方法論、ツール、段階別コマンドを集めた公開資料
- 対象読者はLLM/VLM学習エンジニアと運用担当者で、迅速に問題を解決できるよう、スクリプトやコピーして実行できるコマンドを多数含む
- 内容は2022年のBLOOM-176B、2023年のIDEFICS-80B、2024年のContextual.AIにおけるRAGモデル学習経験で蓄積されたノウハウに基づく
- 範囲はクラウド選定、アクセラレータ・ストレージ・ネットワーク、オーケストレーション、学習、推論、デバッグ、テスト、各種リソースまで含み、PDFとEPUBの電子書籍も提供
- 大規模MLコンピュートクラスタを直接扱うのが難しいコミュニティが、実際の大規模学習経験から得られた運用知識を間接的に学べる公開ナレッジリポジトリ
本の目的と読者
- Machine Learning Engineering Open Bookは、大規模言語モデルとマルチモーダルモデルの学習、ファインチューニング、推論のための公開ナレッジ集
- 技術資料としての性格が強く、LLM/VLM学習エンジニアや運用担当者がすぐに適用できるよう、スクリプトとコピーして実行可能なコマンドを含む
- リポジトリの内容は、過去に調査して実際に動作した解決策をすばやく再発見するための個人的なノートから始まり、より広いMLコミュニティと共有されている
経験に基づく対象範囲
- ノウハウのかなりの部分は、実際の大規模モデル学習の経験から蓄積されたもの
- 2022年のオープンソース BLOOM-176B の学習
- 2023年のマルチモーダルモデル IDEFICS-80B の学習
- 2024年の Contextual.AI におけるRAGモデル学習
- 大規模MLコンピュートクラスタのレンタル費用が高く、直接経験しにくい領域の知識をコミュニティが間接的に学べるようにすることに焦点がある
収録トピック
-
Insights
- AI Battlefield Engineering
- クラウドプロバイダの選び方
-
Hardware
- Compute: アクセラレータ、CPU、CPUメモリ
- Storage: ローカル、分散、共有ファイルシステム
- Network: ノード内およびノード間ネットワーキング
-
Orchestration
- コンテナとリソースを管理するオーケストレーションシステム
- SLURM: Simple Linux Utility for Resource Management
-
Training / Inference
- モデル学習関連ガイド
- モデル推論に関するインサイト
-
Development
- 簡単な問題から難しい問題まで扱うデバッグ・トラブルシューティング
- 関連レシピと方法論をまとめた The Art of Debugging Open book
- テスト作成に役立つヒントとツール
-
Miscellaneous
- LLM/VLM年表リソース
すばやく探せる比較表とツール
- 高性能アクセラレータ比較表は、理論上のTFLOPSとアクセラレータメモリの容量・速度を扱う
- ネットワーク比較表は、ノード間ネットワーキングとノード内ネットワーキングの理論速度を扱う
- よく使うツールは別途ショートカットとして提供
all_reduce_bench.py:nccl-testsより簡単にネットワークスループットをベンチマークするツールtorch-distributed-gpu-test.py: ノード間接続性をすばやくテストするツールmamf-finder.py: アクセラレータで実際に得られるTFLOPS測定値を探すツール
- よく使うガイドも別途ショートカットとして提供
- PyTorchアプリケーションが停止したり壊れたりしたときにすぐ適用できるデバッグ解決策
- SLURMユーザー向けチートシートとトリック
- 小さなモデル、データセット、トークナイザの作り方
- 公開されたLLM/VLM学習ログブック集
配布形式と参加方法
- 電子書籍はHugging Face Hubで提供
- 電子書籍は数週間に一度程度再ビルドされる予定で、最新版を直接ビルドするための手順も提供される
- MLエンジニアリングに関する議論は、リポジトリの community discussions で可能
- バグ、誤字、改善提案は Issue またはPRで受け付けている
- コンテンツライセンスはAttribution-ShareAlike 4.0 International
- 引用情報には
Machine Learning Engineering Open Book、年2023-2026、GitHubリポジトリURLを含む
1件のコメント
Hacker Newsのコメント
研究支援の仕事としてLLMの学習設定のデバッグを毎日しているが、始めた当初にこういうノートがあれば本当に助かっただろうと感じる
現在、ゲーム/映画アニメーション向けのモーションキャプチャデータ収集には、慣性式と光学式の2つのシステムがある。慣性式はより簡単で安価だが、キャプチャのエラーや不正確さが多く手作業での補正が必要になる。一方、光学式はより正確で後処理は少なくて済むが、ハードウェアとスペースのコストが大きい
慣性式モーションキャプチャスーツを着て、同時に光学式のセッションも録画し、機械学習でモーションキャプチャデータの自動補正を学習させるというアイデアだ。理論的には、慣性式の録画データを機械学習に通すことで、光学式レベルの精度が得られるのではないかと思う
最初のプロジェクトとして扱うのに適しているか、どう解くとよいか、参考になる既存プロジェクトがあるかを知りたい
モデルの学習とデプロイに関する作業で応用科学者を支援する立場にいるが、最適化・性能のような、より低レイヤーのエンジニアリング作業にどうすれば触れられるのか気になっている
会社にはMLインフラチームがあるが、目標はプラットフォーム周辺のツールを作ることであって、ワークロードを最適に動かすことに集中しているわけではない
例: https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
https://www.brendangregg.com/linuxperf.html
AI BattlefieldセクションのUnsolicited Adviceの部分が特に良かった。すべてが目まぐるしく速く動き、AI開発の執拗な急進展の中で、常に溺れているような感情的負担を感じる現実をとてもリアルに扱っている
https://github.com/stas00/ml-engineering/blob/master/insight...
Slurmはどのくらい広く使われているのか?
正確な数値は知らないが、Top 500スーパーコンピュータ [3]の圧倒的多数がSlurmを動かしていると推測している。他の人たちが言っているように、学術系の研究計算センターもほとんどがSlurmを使っており、米国DoE国立研究所でもSlurmが支配的だ
それから面白い事実として、伝説かもしれないが、「Simple Linux Utility for Resource Management (SLURM)」という名前は、Futuramaの飲み物Slurmに由来するバックロニムだと言われている [4]
[1] https://en.wikipedia.org/wiki/Oracle_Grid_Engine
[2] https://github.com/adaptivecomputing/torque
[3] https://www.top500.org/
[4] https://futurama.fandom.com/wiki/Slurm
再現性の項目を適当にクリックしてみたが、分散学習における再現性をどう実現するのか、いまだに気になっている。決定的な同期を行うと遅くならないのか? それでも少なくとも一部の大企業では、学習が再現可能だと聞いたことがある
仕事がない状態で、こうしたことをどう経験できるのか?
すでにプログラミングの仕事がない状態でプログラミングを学ぶのと大きくは変わらない
もちろん、どちらも簡単だという意味ではなく、かなりの献身が必要だ
Web開発のような分野と比べると、この分野の採用市場は非常に小さく、プロジェクトは非常に深い知識を持つ専門家を求める。ChatGPTやStack Overflowが大いに助けてくれる種類の仕事ではない
このコミュニティは比較的小さく、始めるにはいろいろなものが必要になる。ある程度の機械学習、確かなコーディング能力、現代のアクセラレータがどう動作するかについての知識、この方向の論文を読んで理解する能力が必要だ
「実現可能」なものを選ぶのはしばしば難しいので、数週間後に再評価し、必要なら期待値を調整することを恐れないほうがいい
重要なのは動き続けることだ
これを実験してみたいが、まともなGPUがない。みんな実際にはどうやって動かしているのか気になる
最新情報を追うには、どのTwitterアカウントをフォローするとよいだろうか?
PDFはどこかにある? ビルド手順は見えるが、実際のファイルは見当たらない