4 ポイント 投稿者 GN⁺ 2024-01-25 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-01-25
Hacker Newsのコメント
  • 研究支援の仕事としてLLMの学習設定のデバッグを毎日しているが、始めた当初にこういうノートがあれば本当に助かっただろうと感じる

    • ゲーム開発者として機械学習/ディープラーニングに入ろうとしているところだが、学びながら取り組める程度に難しすぎず、かつ実際の価値がある問題を見つけるのが最大の課題だった。ひとつ見つけた気がするので意見を聞きたい
      現在、ゲーム/映画アニメーション向けのモーションキャプチャデータ収集には、慣性式と光学式の2つのシステムがある。慣性式はより簡単で安価だが、キャプチャのエラーや不正確さが多く手作業での補正が必要になる。一方、光学式はより正確で後処理は少なくて済むが、ハードウェアとスペースのコストが大きい
      慣性式モーションキャプチャスーツを着て、同時に光学式のセッションも録画し、機械学習でモーションキャプチャデータの自動補正を学習させるというアイデアだ。理論的には、慣性式の録画データを機械学習に通すことで、光学式レベルの精度が得られるのではないかと思う
      最初のプロジェクトとして扱うのに適しているか、どう解くとよいか、参考になる既存プロジェクトがあるかを知りたい
  • モデルの学習とデプロイに関する作業で応用科学者を支援する立場にいるが、最適化・性能のような、より低レイヤーのエンジニアリング作業にどうすれば触れられるのか気になっている
    会社にはMLインフラチームがあるが、目標はプラットフォーム周辺のツールを作ることであって、ワークロードを最適に動かすことに集中しているわけではない

    • 最適化はプロファイリングなしには不可能だと思う。モデル性能を理解するためのツールに慣れるのが第一歩になり得る
      例: https://pytorch.org/tutorials/recipes/recipes/profiler_recip...
    • Brendan Greggのシステム性能とプロファイリングに関する資料は良い出発点だ。MLの性能問題のかなりの部分は結局Linux perfであったり、SLURMのような高性能計算スケジューリングシステムで一体何が起きているのかを把握する問題に行き着く
      https://www.brendangregg.com/linuxperf.html
  • AI BattlefieldセクションのUnsolicited Adviceの部分が特に良かった。すべてが目まぐるしく速く動き、AI開発の執拗な急進展の中で、常に溺れているような感情的負担を感じる現実をとてもリアルに扱っている
    https://github.com/stas00/ml-engineering/blob/master/insight...

  • Slurmはどのくらい広く使われているのか?

    • Slurmは**高性能計算(HPC)**コミュニティでは事実上どこにでもある。HPC方面で似た競合としては、SGE [1]とTorque/PBS [2]のリソーススケジューラくらいだと思う
      正確な数値は知らないが、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
    • Wikipediaによると、「SlurmはTOP500スーパーコンピュータのおよそ**60%**でワークロードマネージャとして使われている」とのこと。ここ10年ほど、ほとんどの計算クラスタでジョブマネージャのフロントエンドとして使ってきた
    • Llama 2モデルもSlurm上で学習された
    • 関連して、多数のGPUで大規模モデルの学習を主に行う物理クラスタで、SlurmからKubernetesへの移行に成功した人がいるのか気になる
    • ほとんどの高性能計算クラスタで使われている。まだTorqueに残っているところは例外だろうが
  • 再現性の項目を適当にクリックしてみたが、分散学習における再現性をどう実現するのか、いまだに気になっている。決定的な同期を行うと遅くならないのか? それでも少なくとも一部の大企業では、学習が再現可能だと聞いたことがある

    • 学習の更新をできるだけ交換法則が成り立つようにしたいはずだ。そうすれば、更新をどの順序で適用しても関係なくなる
  • 仕事がない状態で、こうしたことをどう経験できるのか?

    • 投稿された本のような資料を読み、自分で小さなプロジェクトをやってみればよい
      すでにプログラミングの仕事がない状態でプログラミングを学ぶのと大きくは変わらない
      もちろん、どちらも簡単だという意味ではなく、かなりの献身が必要だ
    • 目標が就職なら、現実的な期待値を持つ必要がある
      Web開発のような分野と比べると、この分野の採用市場は非常に小さく、プロジェクトは非常に深い知識を持つ専門家を求める。ChatGPTやStack Overflowが大いに助けてくれる種類の仕事ではない
    • サイドプロジェクトをするか、他人のサイドプロジェクトに参加すればよい。最も重要なのは、コミュニティとつながり、彼らと会話できる技術的な言語を学ぶことだ
      このコミュニティは比較的小さく、始めるにはいろいろなものが必要になる。ある程度の機械学習、確かなコーディング能力、現代のアクセラレータがどう動作するかについての知識、この方向の論文を読んで理解する能力が必要だ
    • 私の経験上、最良の方法はサイドプロジェクトだ。技術だけを学ぶのではなく、学びたい新しい技術を活用する実現可能なプロジェクトを選んで掘り下げればよい
      「実現可能」なものを選ぶのはしばしば難しいので、数週間後に再評価し、必要なら期待値を調整することを恐れないほうがいい
      重要なのは動き続けることだ
    • fast.aiのコースをやってみるとよい。少しの努力と創造性があれば、2週間以上かかってもモデルをファインチューニングして最先端レベルの結果を出せるはずだ
  • これを実験してみたいが、まともなGPUがない。みんな実際にはどうやって動かしているのか気になる

  • 最新情報を追うには、どのTwitterアカウントをフォローするとよいだろうか?

  • PDFはどこかにある? ビルド手順は見えるが、実際のファイルは見当たらない

    • もうPDFが用意されている: https://github.com/stas00/ml-engineering#pdf-version
    • 数週間以内に用意される予定。ビルドワークフローは準備できているが、スタイルシートと章構成の再編を仕上げる必要がある