Llama 3.2の推論エンジンをC++とCUDAで一から自作、6時間の解説動画と85ページの手書きノート付き
Hours of YouTube and 85 handtyped pages of notes on LLM Inference – Start here
プロンプトがトークンになるまでの処理を、Llama 3.2 1B Instructを例にC++17とCUDAで自作する学習プロジェクト。SafeTensorの読み込み、RMSNormやRoPE、SwiGLU、KVキャッシュ、ページドアテンション、連続バッチ処理までを段階的に実装し、6時間超のYouTube動画とAIを使わずに書いた85ページ超の手書きノートで解説する。
このPDFの文章はすべて私自身が書いたもので、AIによる執筆は一切使っていない。
HNでの議論
12- ericreg92
このスライドは明らかにLLMで生成されている。
- samirswr
6時間以上の映像を撮影し、85ページ以上のノートを手書きして、AI推論について全くの初心者に教える教材を作りました。
この2ヶ月間、フルタイムのSWEインターンとして働きながら、仕事後にこのビデオシリーズを作るために励んできました。私はコーディングをはじめ多くのことを、初心者向けのYouTube動画を通じて学びました。今、AIの台頭により、そうした動画はあまり出てこなくなっているので、それを変えたいと思いました。
これは です。これを作るにあたっては多くの思考と考慮を重ねており、ノートはすべて私が書いたものです。透明性のために言うと、コードも小さなバグ修正やreadmeの更新などを除いてほぼすべて私が書きました。各動画に関連する追加ノートはAI生成のものもありますが、メインのノートはすべて私自身のものです。
このシリーズでは、LLMにプロンプトを送ったときに何が起こるかから始めて、C++とCUDAで小さなLlama 3.2 1B推論エンジンを構築する方法を順を追って説明します。
扱う内容は以下の通りです:
テキストがトークンになり、トークンが埋め込みになる仕組み。
モデルの重みをGPUメモリにロードする方法。
CUDAの基本、独自のGPUカーネルの書き方、cuBLASを使った行列積。
Transformerのステップバイステップ:RMSNorm、RoPE、アテンション、SwiGLUフィードフォワードネットワーク。
Prefillとdecode:プロンプトを処理し、応答を1トークンずつ生成する方法。
KVキャッシュと、それが繰り返し計算を節約する仕組み。
複数のリクエストを処理するための静的バッチングと連続バッチング。
GPU上のキャッシュデータを管理・読み取るためのページドKVキャッシュとページドアテンション。
GitHubリポジトリはこちらです […]
- samirswr
気に入っていただけたら、ぜひつながりましょう!:https://www.linkedin.com/in/samir-sarwar-swe/