Tinygradの5年間
108日前原文(geohot.github.io)
概要
- tinygradは2020年10月17日に最初のコミット
- 現在6人のチーム、約18,935行のコードベース
- NVIDIAと競うための独自ソフトウェアスタック構築
- 他社の巨大なコードベースと比較し、圧倒的に小規模
- 目標はペタフロップのコモディティ化
tinygrad開発の歩みと哲学
- tinygradは2020年10月17日に最初のコミット
- 資金調達から約3年が経過
- 現在のチームは6人構成
- テストを除くコードベースは18,935行
- 5年間で18,935行に注力し、他のメンバーも数年を費やす
- 今後さらに5年の開発期間を見込む
- NVIDIAと競合するための正しいプロセス重視
- 最初からチップ(ASIC)設計に着手するのは非効率と主張
- ソフトウェアスタックの完成が最優先
- SOTAモデルを訓練可能な完全な主権ソフトウェアスタック
- 完成後はチップ設計が容易になるという見解
- AMD, Amazon, Tesla, Groqもチップを設計したが
- GoogleとNVIDIAのみが本格的な訓練に利用されている理由はソフトウェア
- LLVM依存排除を進行中
- pure Python以外の依存をゼロにしてAMD GPUを駆動
- フロントエンド、グラフコンパイラ、ランタイム、ドライバを完備
- 既にPyTorchを上回るワークロードも存在
- 最終的に約20,000行で完成予定
ソフトウェア設計に対する批判とtinygradのアプローチ
- ソフトウェア設計の多くが誤った考え方に基づくと指摘
- ほとんどのコードベースには他の部分の問題へのワークアラウンドが存在
- その多くは深層的かつ構造的で、コードを読んでも気付きにくい
- ソフトウェアの**98%**がこのようなワークアラウンドで構成されていると主張
- Elon Musk流の「要件を愚かにしない」アプローチを採用
- 「最良の部品は部品がないこと」を重視
- ほとんどの要件は他の抽象化との互換性維持のために存在
- LLMサーバーの例
- 本質的要件は「OpenAI互換APIでLLMを高速実行」
- 実際のコードベースは何百万行にも膨れ上がっている
- tinygradは1/1000の規模
- 他のコードは目標よりも他コードとの整合性に注力しているため非効率
- 同様の非効率性が組織にも存在と指摘
tiny corpの組織形態と運営
- tiny corpは分解型(deconstructed)企業
- 高級シェフが料理を分解するように、会社の構造も分解
- プライベートな要素はほとんどなく、DiscordとGitHubが主な運営基盤
- 資金調達手段
- コンピュータ販売部門で年間約$2Mの売上
- AMDとの契約でMI350XをMLPerf上でLlama 405B訓練に利用
- 交渉は主にTwitter上で公開
- 採用はリポジトリへの貢献によって決定
- 自律性の高い職場、週1回のミーティング、目標はtinygradの改善
- ミッションはペタフロップのコモディティ化