見出し画像

DeepSeek-V2.5 を試す

tl;dr

  • DeepSeek-V2.5 は 236B / Active Parameter 21B の MoE

  • Hugging Face にてモデルは公開、Web と API からも利用可能

  • Function Calling、FIM (Fill In the Middle)、Json Output に対応

  • 公式のウェブ版で性能を確かめる

  • Ollama を使って推論させてみる

DeepSeek-V2.5 とは

DeepSeek-V2-Chat と DeepSeek-Coder-V2-Instruct を組み合わせた大規模言語モデル。236B の MoE でアクティブパラメータは 21B。開発元は中国の DeepSeek 社。

補足を入れつつ、上記のポストをまとめます。

  • DeepSeek-V2-0628 と DeepSeek-Coder-V2-0724 を組み合わせたモデル(手法については言及されず)

  • 文章作成能力、指示追従性、人間の好みとの整合性が向上

  • モデルは公開、Web と API からも利用可能

  • Function Calling、FIM (Fill In the Middle)、Json Output に対応

  • V2 そのままの設定だと性能低下の可能性、System Prompt と Temperature の調整を推奨

  • ほぼすべてのベンチマークで元のモデルを上回る性能

  • 内部評価では元のモデルより GPT-4o mini / ChatGPT-4o-latest に対する勝率アップ

モデルページも簡単にまとめます。

  • BF16 で推論するには、80GB x 8 の GPU が必要

  • Transformers / vLLM で推論可能、後者を推奨

  • チャットテンプレートの例と System Message ありの書き方(差分は`{system_message}`部分のみ)

<|begin▁of▁sentence|><|User|>{user_message_1}<|Assistant|>{assistant_message_1}<|end▁of▁sentence|><|User|>{user_message_2}<|Assistant|>
<|begin▁of▁sentence|>{system_message}<|User|>{user_message_1}<|Assistant|>{assistant_message_1}<|end▁of▁sentence|><|User|>{user_message_2}<|Assistant|>
  • Function Calling: role -> system の content に関数定義を入れる

tool_call_messages = [{"role": "system", "content": tool_system_prompt}, {"role": "user", "content": "What's the weather like in Tokyo and Paris?"}]
  • Json Output: 下記の形式の JSON 用の System Prompt を追加

json_system_prompt = f"""{user_system_prompt}

## Response Format

Reply with JSON object ONLY."""
  • FIM: prefix と suffix を入れて fim_prompt として与える

fim_prompt = f"<|fim▁begin|>{prefix}<|fim▁hole|>{suffix}<|fim▁end|>"
  • ライセンスはリポジトリそのものは MIT、モデルの仕様は専用のモデルライセンスに従う(商用利用可)

ライセンスを読む限り、モデルカードに記載の通り商用利用は可能っぽい。

6. The Output You Generate. Except as set forth herein, DeepSeek claims no rights in the Output You generate using the Model. You are accountable for the Output you generate and its subsequent uses. No use of the output can contravene any provision as stated in the License.

https://github.com/deepseek-ai/DeepSeek-V2/blob/main/LICENSE-MODEL

この一文を読む限り、他のモデルの学習にも使えそう。

本記事では DeepSeek-V2 について深く掘り下げませんが、詳細が気になる方は GitHub リポジトリや論文をご覧ください。

注:元のモデルの 236B / Active Parameter 21B のうち、後者は DeepSeek-V2.5 のモデルカードに明示的には記載がありません(236B の記載はあります)。元のモデルからマージか何か特殊な結合をしたと思うのですが、もしかすると Active Parameter 数が変わっているかもしれません。もし間違えていたらご教示いただければと思います。

DeepSeek-V2.5 を試す

手っ取り早く性能を確かめるには DeepSeek のウェブ版がおすすめ。

日本語を問題なく話せそうな雰囲気はあります
そんなに難しくないタスクであればコーディングにも使えそう

ちょっとしたチャットには問題なく使えそうな性能です。

自前で推論させてみる

早速 Ollama が対応していたので、Ollama 経由で動かしてみます。

もし Ollama が入っていなければ Ollama を入れてください。

brew install --cask ollama

DeepSeek-V2.5 をプルしてください。こちらの実態は 236b-q4_0 です。133GB あります。MoE のためアクティブパラメータは 21B ですが、モデルロードに 140GB 程度のメモリが必要ですのでご注意ください。

ollama pull deepseek-v2.5

DeepSeek-V2.5 の推論

ollama run deepseek-v2.5
$ ollama run deepseek-v2.5 --verbose
>>> 核融合発電について教えてください。
### 核融合発電とは?

**核融合発電**(nuclear fusion power generation)は、軽い原子核が結合して重い原子核になる際に放出されるエネルギーを利用する発電方法です。このプロセスは太陽や他の恒星で起こっている反応と
同様で、**「核融合」**と呼ばれます。

### 核融合の原理

1. **原子核の結合**: 軽い原子核(通常は水素の同位体である重水素や三重水素)が高温度・高密度の環境下で衝突し、結合して新たな原子核を形成します。
2. **質量欠損**: この過程で一部の質量がエネルギーに変換されます(アインシュタインの公式 \(E=mc^2\) に基づく)。
3. **放出されるエネルギー**: 結合後の原子核は、元の質量よりも少ないため、差分が熱として放出されます。この熱を利用して発電するのが核融合発電です。

### 核融合反応の例

最も有望視されている核融合反応は、重水素(D)と三重水素(T)の結合です:
\[ \text{D} + \text{T} \rightarrow \text{He}^4 (3.5 \text{MeV}) + n (14.1 \text{MeV}) \]
- **D**: 重水素(Deuterium)、水素の同位体
- **T**: 三重水素(Tritium)、水素の別の同位体
- **He^4**: ヘリウム原子核
- **n**: 中性子
- **MeV**: メガ電子ボルト、エネルギーの単位

### 核融合発電の利点

1. **燃料が豊富**: 重水素は海水から簡単に抽出できるため、地球上に無尽蔵に存在します。三重水素は自然界に少ないですが、中性子とリチウムを反応させて生成することが可能です。
2. **環境負荷が小さい**: 核融合発電は放射性廃棄物の量が少なく、放射能レベルも低いため、長期的に管理しやすいとされています。
3. **安全性が高い**: 事故時のリスクが小さく、核分裂反応(原子力発電)のような連鎖反応が起こりにくいため、安全面で有利とされています。
4. **効率が高い**: 一度の核融合反応で大量のエネルギーを生み出せるため、燃料の使用量は少なくて済みます。

### 技術的課題

1. **高温・高密度環境の維持**: 核融合反応を起こすには極端な温度(数億度)と圧力が必要です。現在、磁場やレーザーを用いてプラズマ状態を維持する技術が研究されています。
2. **反応制御**: 核融合反応は一瞬で大量のエネルギーを放出するため、安定して長時間にわたって発電するための制御技術が必要です。
3. **材料耐久性**: 高温プラズマと接触する材料は極端な条件に耐える必要があり、現在の素材では限界があります。
4. **経済性**: 現状では核融合発電の建設コストが高いため、経済的に競争力を持つためにはさらなる技術革新が必要とされています。

### 現状と未来展望

- **ITER(国際熱核融合実験炉)**: フランスで建設中の大規模な核融合研究施設で、2025年以降に初めてのプラズマ生成を目指しています。
- **商業化へ向けて**: 現在は実験段階ですが、ITERなどの研究成果が将来の商業発電所につながることが期待されています。2050年以降に商用化を目指して活発な研究開発が進められています。

核融合発電は、持続可能で安全なエネルギー源として未来のエネルギー問題を解決する有力な候補と見られています。

total duration:       1m16.886282416s
load duration:        24.741541ms
prompt eval count:    26 token(s)
prompt eval duration: 6.960413s
prompt eval rate:     3.74 tokens/s
eval count:           1444 token(s)
eval duration:        1m9.899178s
eval rate:            20.66 tokens/s

LaTeX もちゃんと書けそうな雰囲気はある。Wikipedia に載っていそうな話とは言え、ハルシネーションをほぼしていない。強いて言えば ITER が遅延したくらい(これはデータセットになくとも問題ない)。MoE っぽい高速推論で素晴らしい!MoE 最高!

$ ollama run deepseek-v2.5 --verbose
>>> 太宰治の人間失格について教えてください。
「人間失格」は、日本の作家である太宰治が1948年に発表した中編小説です。この作品は太宰治の代表作とされ、彼の生涯を通じて繰り返し描かれたテーマである「生きる苦悩」や「人間性の喪失」を深く掘
り下げた内容となっています。

### 作品の構成
「人間失格」は、大きく3つの部分から構成されています:
1. **序文** - 主人公である葉蔵が死後に発見された手記として始まります。この部分は、葉蔵の人生を振り返るための導入部となっています。
2. **第一章** - 幼少期から青年期に至るまでの葉蔵の経験が描かれます。人間社会の虚偽や自己嫌悪、孤独感などを深く表現しています。
3. **第二章** - 青年期から成人に至る過程での葉蔵の苦悩と堕落が描かれます。酒や薬物、放蕩な生活を通じて自分自身を追い詰めていく様子が綴られます。
4. **第三章** - 葉蔵の最期に向かう過程で、彼の心境や周囲との関係性が描かれます。最終的には自殺を企てるも失敗し、精神病院に収容されるという悲劇的な結末となります。

### 主要テーマ
- **人間性の喪失**: 葉蔵は常に自分が「人間」であることを疑い、他人との適切なコミュニケーションが取れない状態に陥ります。彼は周囲の虚偽や自己嫌悪感から逃れるため、異常なほどの演技を続けて
います。
- **孤独と不安**: 葉蔵は深い孤独感に苛まれ、周囲の人々との関係性が希薄であることを痛感します。自分自身の存在意義を見失いながらも、他人から愛されるために努力する姿が描かれます。
- **生きる苦悩**: 葉蔵は常に「生きる」こと自体に苦悩を感じており、自殺願望を抱いています。彼の人生は一連の失敗や挫折から成り立ち、絶望的な状況が繰り返されることで作品全体に暗い雰囲気を醸
し出しています。

### 太宰治との関連性
「人間失格」は、太宰治自身の人生や思想が深く反映された作品であると言われています。彼自身が何度も自殺を企て、最終的に1948年に溺死する形で命を落としたことからも、葉蔵の苦悩は太宰治の内面を
象徴する存在と捉えることができます。

### 影響と評価
「人間失格」は発表以来、多くの読者から共感を呼び、現在でも広く愛される文学作品となっています。特に若年層の読者から強い支持を受けており、太宰治は「悩める青年たちの生の教科書」として位置付
けられることが多いです。

以上が「人間失格」についての概要です。作品を深く理解するためには、実際に読んでみることをお勧めします。

total duration:       1m2.76011025s
load duration:        22.102167ms
prompt eval count:    29 token(s)
prompt eval duration: 7.124768s
prompt eval rate:     4.07 tokens/s
eval count:           1185 token(s)
eval duration:        55.612508s
eval rate:            21.31 tokens/s

人間失格も Reflection Llama-3.1 70B より理解できている印象。ハルシネーションに該当するのは、第一章→第一の手記、溺死→入水あたりかな。細かい解釈は DeepSeek の解釈なんでしょう。いずれにせよ、パラメータサイズがデカいとちゃんと答えてくれます。素晴らしい。


note や X をフォローいただけるとうれしいです!

note: https://note.com/schroneko/

X: https://twitter.com/schroneko


すべて勉強代に充てさせていただきます!アウトプットします!