.webp)
Flux.1でイラスト生成
前の記事
DeepSeek-R1のリリースで、半導体関連の株価が大きく下がりました。
他大手AI企業と比較すると、わずかなマシンパワーでOpenAI o1と同等の性能を実現できたことが原因です。
アメリカは輸出規制を発動していますが、輸出規制前と規制後でDeepSeekはNvidiaのGPUを5万枚確保することができていたそうです。
大手AI企業はNvidiaのGPU50万枚以上で運用していますが、規制のある中でこれだけの結果を出せたことで、半導体の需要が下がるのではないかという不安から株価へ大きな影響があったのでしょう。
この記事で実際に動かしてみますが、NvidiaのGPUは必要なので、そこまで気にすることでもないような・・・
必要数は1/10になりましたが、大手AI企業はいくらでも欲しいですし、逆にローカルでの開発ハードルが下がったことで、新たな参入も増えてくるのではないかと思います。
DeepSeek-R1の性能や特徴を確認して、実際に動かしてみましょう。
DeepSeek公式のDistillモデル性能比較表です。
DeepSeek-R1-Distill-Llama-70Bが全体的に性能高そうです。
Model | AIME 2024 pass@1 | AIME 2024 cons@64 | MATH-500 pass@1 | GPQA Diamond pass@1 | LiveCodeBench pass@1 | CodeForces rating |
---|---|---|---|---|---|---|
GPT-4o-0513 | 9.3 | 13.4 | 74.6 | 49.9 | 32.9 | 759 |
Claude-3.5-Sonnet-1022 | 16.0 | 26.7 | 78.3 | 65.0 | 38.9 | 717 |
o1-mini | 63.6 | 80.0 | 90.0 | 60.0 | 53.8 | 1820 |
QwQ-32B-Preview | 44.0 | 60.0 | 90.6 | 54.5 | 41.9 | 1316 |
DeepSeek-R1-Distill-Qwen-1.5B | 28.9 | 52.7 | 83.9 | 33.8 | 16.9 | 954 |
DeepSeek-R1-Distill-Qwen-7B | 55.5 | 83.3 | 92.8 | 49.1 | 37.6 | 1189 |
DeepSeek-R1-Distill-Qwen-14B | 69.7 | 80.0 | 93.9 | 59.1 | 53.1 | 1481 |
DeepSeek-R1-Distill-Qwen-32B | 72.6 | 83.3 | 94.3 | 62.1 | 57.2 | 1691 |
DeepSeek-R1-Distill-Llama-8B | 50.4 | 80.0 | 89.1 | 49.0 | 39.6 | 1205 |
DeepSeek-R1-Distill-Llama-70B | 70.0 | 86.7 | 94.5 | 65.2 | 57.5 | 1633 |
前モデルDeepSeek-V3をベースに強化学習のみで作られたオリジナルモデル。
高度な推論能力を獲得したが、無限ループや言語の混在など、多くの課題を抱える。
強化学習の前に高品質のコールドスタートデータを使い、DeepSeek-R1-Zeroの課題を克服して作られたモデル。
DeepSeek-R1は671Bあるモデルで、相当なVRAMがないと動作させることはできないですが、知識蒸留(knowledge distillation)という機械学習アプローチで、他の小規模なモデルを使用することができます。
事前に準備されているモデルは以下の通りです。
モデル | ベースモデル |
---|---|
DeepSeek-R1-Distill-Qwen-1.5B | Qwen2.5-Math-1.5B |
DeepSeek-R1-Distill-Qwen-7B | Qwen2.5-Math-7B |
DeepSeek-R1-Distill-Llama-8B | Llama-3.1-8B |
DeepSeek-R1-Distill-Qwen-14B | Qwen2.5-14B |
DeepSeek-R1-Distill-Qwen-32B | Qwen2.5-32B |
DeepSeek-R1-Distill-Llama-70B | Llama-3.3-70B-Instruct |
前回構築した環境でDeepSeek-R1-Distill-Qwen-32Bを動かしていきます。
llama.cppを使って量子化したモデルを動かしてみます。
次のページからllama.cppをcloneして、buildしていきます。
DeepSeek-R1-Distill-Qwen-32Bを動かすには通常、パラメーター数の2倍VRAMが必要です。
パラメータ数とは、モデルの内部で調整される変数の数で、このモデルだと32Bなので、320億パラメータのモデルとなります。
VRAMが64G(32の2倍)必要ですが、モデルを量子化することで、サイズが小さくなり、必要なVRAMを下げることができます。
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
まずはcmakeをインストールします。
apt install cmake
環境にあったビルドをする必要があります。
完了したらbuildディレクトリ内にコマンドが作成されます。
今回はNvidia GPUを使っているので、DGGML_CUDAをONにしてビルドします。
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
Macの場合は以下のコマンドでビルドできます。
cmake -B build -GGML_METAL=ON
cmake --build build --config Release
GGUF形式に変換
python convert_hf_to_gguf.py ./models/DeepSeek-R1-Distill-Qwen-32B/
GGUF形式を量子化
./llama-quantize ./models/DeepSeek-R1-Distill-Qwen-32B/ggml-model-f16.gguf Q4_K_M
詳しくはこちら
llama.cppで量子化することができますが、数時間かかるので公開されているモデルをありがたく使わせてもらいます。
CyberAgentさんが公開している日本語学習済みモデルの量子化モデルを以下のページからmodelsディレクトリにダウンロードします。
modelsにダウンロードしておきます。
build内に作られたllama-cliコマンドを実行します。
--n-gpu-layersを指定してGPUを使うよう設定します。
./build/bin/llama-cli --n-gpu-layers 81 -m models/cyberagent-DeepSeek-R1-Distill-Qwen-32B-Japanese-Q4_K_M.gguf -p "色の異なる5つの玉に紐を通し、ネックレスを作る場合、何種類できますか?"
<think></think>に回答するための根拠を出力し、返答します。
思考の過程で、玉が3個の場合の検証や、間違いや矛盾を考えてくれています。
思考の過程が見えるのはありがたいですね!
一度考えて結果を出力することで、驚異的な性能を実現できているのでしょう。
思考の過程がわかり、日本語でまともな回答を出力することができるオープンソースのDeepSeek-R1の登場は、AI業界に新たな可能性をもたらしました。
知識蒸留と量子化技術により、ローカル環境での大規模モデルの実行が容易になり、新たなAI開発者や企業の参入も加速していくことになりそうです。
次回も、DeepSeek-R1について書いていきます。