Petals - BitTorrentスタイルで自宅でLLMを実行
(petals.dev)- Petalsは、大規模言語モデル全体を1台のデバイスに載せず、家庭用GPUやGoogle Colabで一部だけを実行して、テキスト生成とファインチューニングを可能にする
- Llama 3.1は最大405B、Mixtral 8x22B、Falcon 40B+、BLOOM 176Bまで対応し、個人の機材でも大規模モデルを扱える
- ユーザーは自分が担当するモデル断片をロードした後、残りの断片を提供する参加者ネットワークに接続するBitTorrent式の構造で動作する
- 単一バッチ推論はLlama 2 70Bで最大6 tokens/sec、Falcon 180Bで最大4 tokens/secと、チャットボットや対話型アプリに使える水準
- 一般的なLLM APIよりも広く、ファインチューニングやサンプリング方式を選べ、モデル内部の経路やhidden statesまで扱える
分散方式で大規模モデルを実行
- Petalsは大規模言語モデルを自宅で実行することを目指しており、BitTorrentのように複数のユーザーがモデルの異なる部分を提供する方式で動作する
- ユーザーはモデル全体をロードせず、モデルの一部だけを載せたうえで、残りの部分を提供するネットワークに参加する
- 対応モデル:
- Llama 3.1: 最大405B
- Mixtral: 8x22B
- Falcon: 40B+
- BLOOM: 176B
- 家庭用GPUまたはGoogle Colabでテキスト生成とタスク別ファインチューニングを実行できる
- 単一バッチ推論性能:
- Llama 2 70B: 最大6 tokens/sec
- Falcon 180B: 最大4 tokens/sec
- この速度はチャットボットや対話型アプリに十分な水準
APIより広い制御範囲
- Petalsは従来のLLM APIを超えて、ファインチューニングやサンプリング方法を直接選べるようにする
- モデルを通過するカスタム経路を実行したり、hidden statesを確認したりできる
- APIの手軽さとPyTorch、🤗 Transformersの柔軟性をあわせて提供する
- すぐに試せるColabノートブックとGitHubドキュメントが提供されている
- GPUを提供してPetalsの容量を増やす参加方法があり、開発の最新情報はDiscordで追える
- このプロジェクトはBigScience研究ワークショップの一部
1件のコメント
Hacker News の意見
興味深い。モデルの重みを層ごとに分けて複数のマシンに分散し、各マシンは準備ができたら大きなハッシュテーブルに自分を登録したうえで、自分が担当する層について「チームとして」推論やファインチューニングを行う構造のように見える
まだ初期段階だが、https://github.com/jmorganca/ollama 向けのモデル重みを Docker レジストリにホストする作業をしてきた。主な理由はコンテンツアドレス指定性で、Ollama が毎回正しい重みがダウンロードされたかを検証でき、最終的には名前や変更され得る URL ではなくコンテンツ自体によって重みを取得できるようになる
次のステップとしては、モデルを層ごとに分割して各層を独立して保存し、こうした用途に使ったり、複数の「ローカル」マシンにまたがってより大きなモデルをダウンロードして実行したりするのに活用できそうだ
HN のガイドラインにも「HN を主に宣伝に使わず、自分の仕事をたまに投稿するのは構わないが、サイトの主な利用目的は好奇心であるべきだ」とある
今回の場合も、OP の取り組みについて話すだけで十分で、プロジェクトへの無料バックリンクはなくてもよかったと思う
「タスクに合わせてファインチューニングできる」という部分で眉が上がった
70B のファインチューニングは単に難しいというレベルではなく、どれだけ長く待てるとしても、非常に高価なクラウドインスタンスを借りるか、家ほどの値段の PC を買わない限り、文字通り不可能だ
「llama 学習ホード」があるなら喜んで参加したい
私の理解では、N 十億パラメータのモデルは、N より少し小さいギガバイト数の VRAM を持つ GPU でファインチューニングできる
70B パラメータモデルなら A100 くらいだろうか?
また Lambda Cloud では 70B モデルを 100 万トークンあたり 2 ドルで、Replicate では 10 ドル未満でファインチューニングできる
LLM も各本を独立に学習すると考えれば、LLM の重みの 2 つのデルタを単に足せばよさそうに見える
学習済みの LLM は何らかの形で合成可能なのだろうか? たとえばどちらも 99% は同じデータを信頼しているが、1% だけ異なる場合、完全に別々の 2 つのモデルが必要なのか、それとも 99% については同じ意見を持つ他の人たちと計算を共有し、各自の信頼モデルの違いを補正する派生モデルを作れるのだろうか?
ニューラルネットワークについての理解は基礎的なレベルだが、モデルの有用性を保ちながら重みをそのように操作することが、まったくあり得ないことのようには見えない
尋ねている理由は、同じ性能の LLM 2 つが、どの文に同意し、どの文で disagreement があるのか分かれば有用そうだからだ。そうすれば、その差を逆に学習データの差へ対応付けられる。差が小さい場合に限られるだろうが
逆に、同じ性能の LLM 2 つは、より強い 1 つのモデルを作る機会を逃したものに近く、disagreement 分析も高すぎるコストなら、かなり違った世界になる
こうした適応層を持ってきて任意に組み合わせられるという意味での合成可能性ではないが、共通の重み基盤を共有しつつ異なるモデルを学習することは、すでに解かれた問題だ
悪意ある参加者が、より大きな計算の中で自分の担当分の出力を変えるのをどう防ぐのだろう? 攻撃者が決めたネットワーク出力を作れる方法のようなものがなくても、多数のノードが参加して単にゴミのような結果を返せば、システムを実質的にサービス拒否攻撃できそうに見える
またクライアントは、ネットワーク上で互いに重ならない複数の経路にデータを流し、結果が一致するか確認できます
頻繁な攻撃者は見つけ出せますが、100% の保護を提供するものではないため、完全な正確性保証が必要であれば、人々は非公開 swarmを構成するだろうと考えています。たとえば、単独で LLM を動かすほどの GPU はないものの、信頼できるハードウェア所有者がいる場合、非公開の Petals swarm を構成して、地理的に分散したハードウェア上で一緒に LLM を実行し、データを処理できます
最初に浮かんだ疑問は「経済性はどうなのか?」だった。FAQによると:
Petals のインセンティブは暗号資産やブロックチェーンなどに基づいているのか? いいえ。Petals は他のあらゆる面では完全に分散化されたシステムだが、インセンティブについては AI Horde kudos に似た中央集権型システムとして作業中。このポイントをお金に交換するサービスを提供する予定はないので、システム内で使う「ゲーム」ポイントと考えればよい
Petals は機械学習研究者とエンジニアのための、機械学習中心のプロジェクトであり、金融とは関係がない。インセンティブシステムを中央集権化することにした理由は、開発と保守がはるかに容易で、機械学習研究者に役立つ機能開発に集中できるため
https://github.com/bigscience-workshop/petals/wiki/FAQ:-Freq...
https://lite.koboldai.net/
https://tinybots.net/artbot
https://aihorde.net/
実際、HN で特定の 13B〜70B のファインチューニング済みモデルを試してみたい人がいれば、午後にホスティングできる:
https://huggingface.co/models?sort=modified&search=70B+gguf
https://www.sheepit-renderfarm.com/home
それだけでは全員に十分でない可能性があるため、GPU 時間を公開 swarm に寄付する人向けの明示的なインセンティブである「bloom points」も導入中。システムが準備できれば、Web サイトに上位貢献者を表示し、ポイントを得た人は、より高い優先順位や強化されたセキュリティ保証で推論・ファインチューニングに使ったり、場合によっては他の報酬と交換できるようになる
それでも、ある程度の 中央集権型トークン を望んでいるようには見える
付け加えると、Petals の「トークン」を決済システムに接続しようという意味ではない。一般に、分散型かどうかにかかわらず、機械学習モデルクラスタの呼び出しには、認証と決済手段を同時に提供する暗号資産決済が使われる可能性が高いという意味
Petals はモデル利用のための分散計算のよい実装であり、長期的に価値がありそう
3080 Ti を共有したかったが、スタートガイドのコマンドを実行してみると、依存関係のバージョン問題があるようだ: https://github.com/bigscience-workshop/petals/wiki/Run-Petal...
ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub' (~/.local/lib/python3.8/site-packages/huggingface_hub/__init__.py)独自サーバーの swarm をホスティングできるようだ [0]
「非公開」Petals クラスタのファインチューニング性能が、おおよそどの程度なのか気になる
[0] https://github.com/bigscience-workshop/petals/wiki/Launch-yo...
本当に素晴らしい。この分野を、何千、何百万もの開発者にもっとアクセスしやすくしてくれるとよい
ずっと クラウドソーシング が未来だと思ってきた。情報でも計算でも同じ
実際、「リソース」はすでにあり、配置の問題にすぎない
以前のプロジェクトで Petals を使ったことがある。GPU も共有したし、プロジェクト用のコードも書いた
Petals の部分は自分にとって抽象化されていて、コードを書く体験は普通だった
そのプロジェクトはどこにも上げていないし、その後どうなったのかもよく知らない。おおむね5人くらいが主導していた作業だった