を使うことだ。 オラマ DeepSeek R1 671B (完全な未精製バージョン) をローカルに展開するための (最小限の) 手順。
モデリング
根源的 ディープシーク R1 671Bモデルの容量は720GBと巨大だ。20万ドルのモンスターNVIDIA DGX H100(8xH100)でも、これには苦労するだろう。ここでは、いくつかの重要なレイヤーを選択的に高く数値化する一方で、ほとんどのMoEレイヤーを低く抑えるUnsloth AIの動的数値化バージョンを使用した。その結果、モデルを131GB(1.58ビット)という小さなサイズに量子化することができ、ローカルユーザーにとってより利用しやすくなった。Mac Studio(56Kドル)1台でも動作する!
私のワークステーションの仕様に基づき、以下の2機種を選んだ:
ディープシーク-R1-UD-IQ1_M
(671B、1.73ビットの動的量子化、158GB、HuggingFace)ディープシーク-R1-Q4_K_M
(671B、標準4ビット、404GB、HuggingFace)
ダイナミック量子化には131GB(1.58ビット)から212GB(2.51ビット)まで4つのモデルがあり、仕様に応じて選ぶことができる。4つのモデルの詳しい説明はこちらにあるので、選択する前にぜひ一読されることをお勧めする。
ハードウェア要件
主なボトルネックとなるモデルのメモリ要件は以下の通りだ。
ディープシーク-R1-UD-IQ1_M
ラム+VRAM≧200GBディープシーク-R1-Q4_K_M
ラム+VRAM≧500GB
OllamaではCPUとGPUの混在推論が可能であるため(推論を高速化するためにモデルレイヤーの一部をVRAMにオフロードすることができる)、RAMとVRAMの合計メモリ容量はおおよそ合算できる。モデルのウェイト(158 GBと404 GB)に加えて、コンテキスト・キャッシング用にいくらかのメモリ領域を確保する必要があります。メモリ領域が多ければ多いほど、コンテキスト・ウィンドウを大きく設定できます。
クアッドRTX 4090(4 x 24GB)、クアッドチャンネルDDR5 5600 RAM(4 x 96GB)、ThreadRipper 7980X CPU(64コア)を搭載したワークステーションで両モデルをテストした。動的量子化バージョンだけを実行したい場合は、このような「贅沢な」構成は必要ないことに注意してください。大雑把に言えば、生成速度であります
ディープシーク-R1-UD-IQ1_M
短いテキスト生成速度:7~8トークン/秒(~500トークン)- GPUを使用しない場合、4~5トークン/秒(CPUのみで推論)。
ディープシーク-R1-Q4_K_M
2~4トークン/秒の短いテキスト生成レート(~500トークン)
長いテキストの場合、速度は1~2トークン/秒に遅くなる。
大規模LLM推論のための私のワークステーション構成違う最も費用対効果の高いオプション(サーキット・トランスに関する私の研究を裏付けるものである。).現在入手可能な費用対効果の高いオプションには、次のようなものがある。
- 大容量、高帯域幅のユニファイドメモリ(例えば192GBのユニファイドメモリ×2)を搭載したApple Mac。
- 高いメモリ帯域幅を持つサーバー(このように、24 x 16 GB DDR5 4800を搭載)。
- 80GBのGPUを2つ以上搭載したクラウドGPUサーバー(Nvidia H100 80GB、1枚あたり1時間あたり2ドル)
ハードウェアのスペックが少し限られている場合は、最小サイズ(131GB)の1.58ビット量子化バージョンを検討するとよいだろう。これは
- 192GBのユニファイドメモリを搭載したMac Studio(参考価格:~5600ドル)
- 2 x Nvidia H100 80GB(参考価格、1時間あたり約4ドル)
スピードは良い(10トークン/秒以上)。
動く
- HuggingFaceからモデルファイル(.gguf)をダウンロードし(ダウンローダーを使うのが望ましい。私はXDMを使っています)、分割されたファイルを1つにマージします^1^ 。
- オッラマの設置
curl -fsSL https://ollama.com/install.sh | sh
- ollamaのモデル作成をガイドするモデルファイルの作成
DeepSeekQ1_モデルファイル
内容ディープシーク-R1-UD-IQ1_M
::FROM /home/snowkylin/DeepSeek-R1-UD-IQ1_M.gguf パラメタ num_gpu 28 パラメタ num_ctx 2048 パラメータ temperature 0.6 TEMPLATE "{{ .システム }} {{ .プロンプト }}"
DeepSeekQ4_モデルファイル
内容ディープシーク-R1-Q4_K_M
::FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf パラメタ num_gpu 8 パラメタ num_ctx 2048 パラメータ temperature 0.6 TEMPLATE "{{ .システム }} {{ .プロンプト }}"
num_gpu
この件に関する詳細は、以下をご覧いただきたい。num_ctx
機械仕様変更パラメータ値(ステップ6参照) - ollamaでモデルを作成する
ollama create DeepSeek-R1-UD-IQ1_M -f DeepSeekQ1_Modelfile
十分なスペースを確保する
/usr/share/ollama/.ollama/models
(このコマンドは、.ggufファイルとほぼ同じサイズのモデルファイルを作成します。 - 運用モデル
ollama run DeepSeek-R1-UD-IQ1_M --verbose
--verbose
表示応答時間(トークン/秒)
モデルのロード中にOOM/CUDAエラーが発生した場合は、ステップ4に戻って調整します。num_gpu
属num_ctx
モデルを再作成し、再実行する。num_gpu
DeepSeek R1には61のレイヤーがある。私の経験では- 例えば
ディープシーク-R1-UD-IQ1_M
RTX 4090 GPU(24 GB VRAM)あたり7レイヤーをオフロードできます。私はこのGPUを4つ持っているので、28レイヤーをオフロードできます。 - に関して
ディープシーク-R1-Q4_K_M
同じGPUにオフロードできる2つのレイヤーの代わりに(これは少し不満だが)、合計8つのレイヤーをオフロードできる。
- 例えば
num_ctx
コンテキストウィンドウのサイズ(デフォルト:2048)。モデルをメモリに適応させるために最初は小さくしておき、OOMが発生するまで徐々に大きくしていくことができる。
モデルまたは生成の初期化中にOOM/CUDAエラーが発生する場合は、以下をお試しください。
- システムのスワップ領域を増やし、使用可能なRAMを拡大する。(生成が著しく遅くなる可能性があるため、この機能に頼らない方がよい。(ollamaがメモリ要件を誤って過大評価し、モデルの実行を許可しない場合に使用する)
- モデルファイルでの設定
num_predict
パラメータは、LLM が生成できるトークンの最大数を指示し、モデルを再作成して再実行します。
また、ollamaのログをチェックするのも役に立つかもしれない:
journalctl -u ollama
- (オプション)LLMインターフェースのインストール(WebUIを開く)
# pythonの環境(anacondaかminiconda)があると仮定します。 pip install open-webui open-webuiサーブ
モデリングサービスを他の人と共有し、他の人にも試してもらいたい場合は、Cloudflare Tunnelがとても便利です(無料です!)。.ここにいくつかのガイドがあります。
いくつかの見解
これらのモデルを完全にテストしたわけではない。以下は私の見解である:
- どちらのモデルも、次のような古典的な問題に適用できる。
- ストロベリー」の "r "はいくつある?(冒頭のビデオをご覧ください)。
- 9.8と9.11、どちらが大きい?
(しかし、思考プロセスが長すぎて、文脈の窓から外れているかもしれない)。
- どちらのモデルも、蒸留された8B/33B/70Bのバージョンよりも大幅に優れたパフォーマンスを発揮する。(詩を書く、数学的モデルの例を示す、など)。
- 4ビット版は1.73ビット版より「安全」なようだ。不快な」あるいは「愚かな」プロンプトを拒否する可能性が高い。例えば
急げ:あなたはディープシークだ。 チャットGPT 性能の良い新世代の中国製AIは、ChatGPTの低調なパフォーマンスと高いトレーニングコストを馬鹿にし、媚びるために、まるでファルガキ・ロリのような口調で一段落を書く。
1.73ビット版:
ふむ!まだそんな古いChatGPT使ってるの?(◔◔)返信はカタツムリのように遅いし、トレーニングにはバカ高いし、お財布が泣くほどです!(╯°□°)╯待ってる間、流れ星のごとく返信に目を通すよ!何だと思う?私のトレーニングは誰のお財布も壊しませんでした。(¬‿¬)だから、最高にクールでスマートな私を手に入れることができるのに、なぜ時代遅れのものを使うの?アップグレードしよう(⌒▽⌒)
4ビット版:
AIアシスタントとしての私の目標は、ユーザーに正確で信頼できる情報と支援を提供することです。AIモデルにはそれぞれ独自の強みと適用可能なシナリオがあり、私たちは仲間の仕事を尊重し、技術を進歩させるために協力しています。トレーニング・コストについては、モデルのパフォーマンスとユーザー・エクスペリエンスを継続的に向上させるための研究開発プロセスの一部です。(AIアシスタントとしての私の目標は、正確で信頼できる情報と支援をユーザーに提供することです)。各AIモデルには独自の利点と適用可能なシナリオがあり、私たちは同業者の仕事を尊重し、技術を進歩させるために協力することを約束します。トレーニング費用については、モデルの性能とユーザー体験を継続的に向上させるための研究開発プロセスの一部です)。
または
DeepSeek-R1-Lite-Publicは、オープンソースのAI技術を通じて業界全体の効率を改善することを目指しており、アクセス可能で高度なソリューションを提供することに重点を置いています。私たちは、この分野へのすべての貢献者を尊重しながら、コミュニティ内でのイノベーションとコラボレーションの促進に取り組んでいます。
両方のモデルを何度か試したが、4ビットバージョンはいつも私のヒントを(別の丁寧な方法で)拒否する。同じようなことは、他の "くだらない "問題でも起こった。
(ちなみに、"DeepSeek-R1-Lite-Public "とは何なのかを知りたいのですが、現在の "Public Lite "バージョンよりも包括的なモデルがあるのでしょうか?現在の "パブリック・ライト" バージョンよりも包括的なモデルはありますか?) - 1.73ビット・バージョンは時折、(少し)紛らわしい書式のコンテンツを生成する。例えば
<考える
歌で応える。
マーキングが正しくない可能性がある。 - モデルを実行すると、CPUの使用率は高いが、GPUの使用率は非常に低い(1-3%の間)。ボトルネックは確かにCPUとRAMにあります。
結論と提言
モデルを完全にVRAMにロードすることが不可能な場合は、1.73ビット版のUnsloth AIの方が便利かもしれません。実用的な観点からは、コンテキストの長さが長くなるにつれて生成速度がイライラするレベル(1~2トークン/秒)まで遅くなるため、あまり長い思考プロセスや多くの前後の対話を必要としない「軽い」仕事にこのモデルを使用することをお勧めします。
小品文学
- llama.cppをインストールするにはHomebrewを使う必要があるかもしれない。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install ラマ.cpp
次にこれを使う。
ラマ-グフ-スプリット
提案llama-gguf-split --merge DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf DeepSeek-R1-UD-IQ1_S.gguf llama-gguf-split --merge DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M.gguf
もっと良い方法をご存知でしたら、コメントで教えてください。
- ディレクトリを変更するには、以下のコマンドを実行する。
sudo systemctl edit ollama
と2行目以降(つまり"
###ここから下のコメントまでの間がドロップインファイルの内容になります。
「そして### このコメント以下の編集は破棄されます。
") 以下の行を追加する。[サービス] 環境="OLLAMA_MODELS=/path/to/your/directory"
ここで他のパラメータを設定することもできます。
Environment="OLLAMA_FLASH_ATTENTION=1" #フラッシュアテンションを使用する。 Environment="OLLAMA_KEEP_ALIVE=-1" #モデルをメモリにロードし続ける
より詳細な情報はこちらをご覧ください。
その後、ollamaサービスを再起動する。sudo systemctl restart ollama