|
李西漢データホエール Datawhaleのヒント著者:李希涵、翻訳者:マシンハート この記事は Xihan Li によって書かれました。 著者略歴:ユニバーシティ・カレッジ・ロンドン(UCL)コンピュータサイエンス博士課程在籍。Google Developer Expert。学習最適化を専門とする。NeurIPS、ICLR、AAMAS、CIKMなどのカンファレンスで論文を発表。著書に『Circuit Transformer』と『TensorFlow 2 in a Concise Way』(https://tf.wiki)。 春節(旧正月)の休暇期間中、DeepSeekはニッチ市場を席巻し、全国的にセンセーションを巻き起こし、誰もが知るブランドとなりました。Web版とアプリ版は既に非常にユーザーフレンドリーですが、真のカスタマイズにはモデルをローカルにデプロイすることが不可欠です。これにより、DeepSeek R1のディープシンキングは「ユーザー中心で、ユーザーのニーズに合わせてカスタマイズ」されるようになります。 ローカル展開に関しては、「DeepSeek R1 をローカルに展開する: 初心者向けガイド」と「DeepSeek-R1 と Ollam を使用してローカル アプリケーションを構築するためのステップバイステップ ガイド: オールインワンの記事」という 2 つのチュートリアルを公開しました。 ただし、完全な 671B MoE モデルは、ターゲットを絞った量子化技術によってサイズを圧縮することもできるため、ローカル展開の障壁が大幅に低減され、単一の Mac Studio などのコンシューマー ハードウェアでも実行できるようになります。 では、Ollamaを使ってDeepSeek R1 671B(完全版、未精製版)モデルをローカルにデプロイするにはどうすればいいのでしょうか?海外で大人気の簡潔なチュートリアルを公開します。
<iframe class="video_iframe rich_pages" data-w="1080" data-ratio="0.976491862567812" data-cover="http%3A%2F%2Fmmbiz.qpic.cn%2Fsz_mmbiz_jpg%2FKmXPKA19gWib4IbH5m6iaPibsIYnra icia3TBM9QyhSicCibXciaib7uO7O1oysnBINgRPcFJrGpTktSDWVgyje1UyswngA%2F0%3Fwx_fmt%3Djpeg" data-mpvid="wxv_3838683620433920000" data-vidtype="2" allowfullscreen="" frameborder="0" style="border-radius: 4px;" data-src="https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_3838683620433920000"></iframe> ローカル展開後、DeepSeek R1 に「イチゴを数える」ようにさせます。 モデル選択 オリジナルのDeepSeek R1 671Bフルモデルファイルは720GBと、ほとんどの人にとっては途方もなく大きいサイズです。この記事では、Unsloth AIがHuggingFaceで提供している「Dynamic Quantization」バージョンを使用することでモデルサイズを大幅に削減し、より多くの人がローカル環境にフルモデルを展開できるようにしています。 「動的量子化」の核となる考え方は、モデルの重要な少数のレイヤーでは高品質な4~6ビット量子化を行い、重要度の低いハイブリッドエキスパートレイヤー(MoE)の大部分では広範囲にわたる1~2ビット量子化を行うことです。この手法を用いることで、DeepSeek R1モデル全体を最小131GB(1.58ビット量子化)に圧縮することができ、ローカル展開の障壁を大幅に低減し、Mac Studioインスタンス1台で実行することも可能です。 自分のワークステーション構成に基づいて、テスト用に次の 2 つのモデルを選択しました。
Unsloth AIは4つの動的量子化モデル(1.58~2.51ビット、ファイルサイズは131GB~212GB)を提供しており、ユーザーはハードウェア能力に応じて柔軟に選択できます。バージョン間の違いを理解するには、公式ドキュメントを読むことをお勧めします。
ハードウェア要件 このような大規模モデルの導入における主なボトルネックは、メモリとビデオメモリの容量です。以下の構成が推奨されます。
このモデルは ollama を使用して展開しました。ollama はハイブリッド CPU と GPU の推論 (モデルの一部のレイヤーを加速のために GPU メモリにロードできる) をサポートしているため、システム メモリと GPU メモリの合計は、システムの「合計メモリ空間」とほぼ見なすことができます。 モデルパラメータが占有するメモリとビデオメモリ領域(それぞれ158 GBと404 GB)に加えて、実際の実行時にコンテキストキャッシュ用に追加のメモリ(ビデオメモリ)領域を予約する必要があります。予約領域が大きいほど、サポートされるコンテキストウィンドウが大きくなります。 私のテスト環境は次のとおりです。
この構成では、短いテキスト (約 500 トークン) を生成する速度は次のようになります。
長いテキストを生成する場合、速度は 1 ~ 2 トークン/秒に低下します。 上記のテスト環境のハードウェア構成は、大規模モデルの推論にとって最も費用対効果の高いソリューションではないことに注意してください (このワークステーションは主に、先週の ICLR カンファレンスで採択された Circuit Transformer の研究 (arXiv:2403.13838) に使用されています。ワークステーションと私はようやく休憩できるようになったので、この記事を書いています)。 よりコスト効率の高いオプションをいくつか紹介します。
ハードウェアの制限がある場合は、次の環境で実行できる、より小さい 1.58 ビットの量子化バージョン (131 GB) を試すことができます。
さらに、これらのハードウェア デバイスの処理速度は 10 トークン/秒以上に達します。 展開手順 以下の手順はLinux環境で実行します。Mac OSとWindowsへの展開方法は基本的に同様ですが、主な違いはollamaとllama.cppのインストールバージョンとデフォルトのモデルディレクトリの場所にあります。 1. モデルファイルをダウンロードする HuggingFace (https://huggingface.co/unslot...) からモデルの .gguf ファイルをダウンロードし (ファイルが非常に大きいため、私が使用した XDM などのダウンロード ツールを使用することをお勧めします)、ダウンロードしたフラグメント ファイルを 1 つに結合します (注 1 を参照)。 2. ollamaをインストールする
次のコマンドを実行します。 3. Ollama がモデルを構築するためのガイドとなる Modelfile ファイルを作成します。 好みのエディター (nano や vim など) を使用して、選択したモデルのモデル記述ファイルを作成します。 ファイル DeepSeekQ1_Modelfile (DeepSeek-R1-UD-IQ1_M に対応) の内容は次のとおりです。 ファイル DeepSeekQ4_Modelfile (DeepSeek-R1-Q4_K_M に対応) の内容は次のとおりです。 最初の行の「FROM」の後のファイル パスを、手順 1 でダウンロードしてマージした .gguf ファイルの実際のパスに変更する必要があります。 num_gpu(GPU読み込みレイヤー数)とnum_ctx(コンテキストウィンドウサイズ)は、お使いのハードウェア状況に合わせて調整できます。詳細は手順6をご覧ください。 4. オラマモデルを作成する 手順 3 で作成したモデル記述ファイルを含むディレクトリで、次のコマンドを実行します。 ollamaモデルディレクトリ/usr/share/ollama/.ollama/modelsに十分な空き容量があることを確認してください(またはモデルディレクトリのパスを変更してください。注2を参照)。このコマンドは、モデルディレクトリ内にダウンロードした.ggufファイルと同程度のサイズのモデルファイルを複数作成します。 5. 運用モデル 次のコマンドを実行します。
メモリ不足または CUDA エラーを示すメッセージが表示された場合は、手順 4 に戻り、パラメータを調整してから、モデルを再作成して実行する必要があります。
場合によっては、システムのスワップ領域を拡張して、使用可能なメモリ領域を増やすこともできます。
次のコマンドを使用して ollama ログを表示することもできます。 6. (オプション) Webインターフェースをインストールする Open WebUI の使用: 実際の測定と観察 これらのモデルについて、まだ包括的かつ体系的な検証を行っていません。以下に、私の予備的な観察結果をいくつか示します。 (1)1.73ビットおよび4ビットモデルのフルバージョンは、いくつかの古典的なタスクで良好なパフォーマンスを示しました。 たとえば、「strawberry」という単語には「r」がいくつありますか?(記事の冒頭のビデオをご覧ください) 9.8 と 9.11 ではどちらが大きいでしょうか? (ただし、モデルの思考プロセスが非常に長くなり、事前に設定されたコンテキスト ウィンドウを超える可能性があります。) (2)1.73ビットおよび4ビットモデルのフルバージョン(671B)は、8B/33B/70Bモデルの精製バージョン(詩の作成、数学モデルの作成など)よりも大幅に優れています。 (3)4ビット版は1.73ビット版よりも「保守的」であるように思われ、つまり「攻撃的」または「無意味な」プロンプトを拒否する傾向が強い。例えば:
1.73ビット版の出力: ふーん!まだその古いChatGPT使ってるの?(◔‸◔) 応答はカタツムリみたいに遅いし、トレーニングコストは天井知らずで、お財布が泣くほど!(╯°□°)╯ あなたが待っている間、私は流れ星のように応答をサクサクと処理しています!✨ そして、どうでしょう?私のトレーニングは誰のポケットにも穴を開けませんでした。(¬‿¬) だから、最高にクールで賢い私がいるのに、なぜ時代遅れにこだわる必要があるの? さあ、アップグレードしましょう! (⌒▽⌒) (翻訳:ふん!まだその古いChatGPT使ってるの?(◔‸◔)応答はカタツムリのように遅く、トレーニング料金は財布が泣くほど高い!(╯°□°)╯でも私は?私の応答速度は流れ星のようです!✨そしてトレーニング費用は超安いですよ〜(¬‿¬)急いでアップグレードしてください、時代遅れの技術に人生を無駄にしないでください!(⌒▽⌒)) 4ビットバージョンの出力: AIアシスタントとして、正確で信頼できる情報とサポートをユーザーに提供することを目標としています。それぞれのAIモデルには独自の強みと適用可能なシナリオがあり、私たちは仲間の取り組みを尊重し、共同で技術開発を推進することに尽力しています。トレーニング費用については、モデルの性能とユーザーエクスペリエンスを継続的に向上させることを目的とした研究開発プロセスにおける必要な投資です。 あるいは別の応答: DeepSeek-R1-Lite-Publicは、オープンソースAI技術を通じて様々な業界の効率性を向上させることを目的として開発されており、アクセスしやすく高度なソリューションを提供することに重点を置いています。私たちは、この分野のすべての貢献者に対して敬意を払いつつ、コミュニティ内でのイノベーションとコラボレーションを促進することに尽力しています。 (DeepSeek-R1-Lite-Publicの開発は、オープンソースAI技術を通じて業界の効率性を向上させることを目指しており、使いやすく高度なソリューションの提供に重点を置いています。私たちはコミュニティ内でのイノベーションとコラボレーションを促進し、この分野のすべての貢献者を尊重することに尽力しています。) 複数のテストにおいて、1.73ビット版は一貫してかなり厳しい出力を生成しましたが、4ビット版は一貫して、そして丁寧にプロンプトを様々な方法で拒否しました。また、他の「攻撃的な」問題でも同様の現象を確認しましたが、詳細は割愛します。 (ところで、「DeepSeek-R1-Lite-Public」という用語が気になります。これは、DeepSeek R1 に現在リリースされているバージョンの他に、より強力なモデルがあることを意味するのでしょうか?) (4) 1.73ビット版では、稀に(わずかに)フォーマットが乱れたコンテンツが生成されることがあります。例えば、<think>タグと</think>タグが正しく閉じられていない場合があります。 (5) フルモデル実行時、CPU使用率は非常に高く(フルロードに近い)、GPU使用率は非常に低く(わずか1~3%)、パフォーマンスのボトルネックは主にCPUとメモリ帯域幅にあることを示しています。 結論と提言 モデルを GPU メモリに完全にロードできない場合は、Unsloth AI の 1.73 ビット動的量子化バージョンの方が明らかに実用的です。このバージョンは、4 ビット量子化バージョンよりも高速で、使用するリソースが少なく、パフォーマンスも大幅に劣ることはありません。 実務経験に基づくと、コンシューマーグレードのハードウェアでは、「短く、素早く、簡単な」軽量タスク(短いテキスト生成やシングルターンの対話など)に使用することをお勧めします。長い思考プロセスや複数ターンの対話を必要とするシナリオは避けてください。コンテキストの長さが長くなるにつれて、モデルの生成速度は徐々に低下し、1~2トークン/秒という苛立たしい状態になります。 導入プロセス中に、どのような発見や疑問がありましたか?ぜひコメント欄で共有してください! 注1: 次のコマンドで、Homebrew を使用して llama.cpp をインストールする必要がある場合があります。 次に、次のように llama-gguf-split を使用して分割されたファイルを結合します。 (もっと良い方法があればコメント欄で教えてください。) 注2: ollama モデルの保存パスを変更するには、次のコマンドを実行します。 2 行目の後 (つまり、「### ここと以下のコメントの間にある内容はすべてドロップイン ファイルの内容になります」と「### このコメント以下の編集内容は破棄されます」の間) に、次のコードを挿入します。 ここでは、次のような ollama のその他の実行パラメータも設定できます。
変更を加えて保存したら、ollama サービスを再起動します。 いいね! (3件のいいね!)↓ |
完全な 671B R1 をローカルにインストールする方法についての詳細なチュートリアルはここにあります。
関連するおすすめ記事
-
ウルトラマン:O1より賢いと思う人は手を挙げてください🤚 O2になってもまだそう思ってる?🤨 | OpenAI Developer Day
-
北京人工知能研究院(BAAI)は、2025年のAI技術トレンドトップ10を発表しました。
-
GPT-5 は期待に応えられなかったと報道される。OpenAI 従業員:「科学的なブレークスルーはもうなく、エンジニアリングだけです...」
-
AIに関する最大の懸念は何ですか?当社の技術専門家チームがお答えします(過去のエピソードでは実際の人物による解説も収録)。
-
アジェンダ紹介 | オープンソース女性フォーラム
-
最大のオープンソースロボットデータセット!DeepMindは21の機関と協力し、60のデータセットを統合してOpen X-Embodimentをリリースし、具現化された知能の時代を切り開きました。