DeepSeek R1のリリースから2週間、不足している部分(トレーニングパイプラインと合成データ)を再現するopen-r1プロジェクトを始めてから1週間が経ちました。この投稿では以下をまとめます:
- DeepSeek-R1のパイプラインとデータセットを再現するためのOpen-R1の進捗
- DeepSeek-R1について学んだことと、それに関する議論
- DeepSeek-R1のリリース以降にコミュニティが構築したクールなプロジェクト
本投稿はプロジェクトのアップデートとして、またDeepSeek-R1に関する興味深いリソース集としてもお役立てください。
1週間後の進捗
まずはOpen-R1の進捗を見てみましょう。Open-R1を始めたのはわずか1週間前ですが、チーム内外やコミュニティの皆さんが協力して取り組み、いくつかの進展を報告できます。
評価
再現の第一歩は、評価スコアを一致させられるかを検証することです。MATH-500ベンチマークでDeepseekが報告した結果を再現できました:
| モデル | MATH-500 (HF lighteval) | MATH-500 (DeepSeek報告値) |
|---|---|---|
| DeepSeek-R1-Distill-Qwen-1.5B | 81.6 | 83.9 |
| DeepSeek-R1-Distill-Qwen-7B | 91.8 | 92.8 |
| DeepSeek-R1-Distill-Qwen-14B | 94.2 | 93.9 |
| DeepSeek-R1-Distill-Qwen-32B | 95.0 | 94.3 |
| DeepSeek-R1-Distill-Llama-8B | 85.8 | 89.1 |
| DeepSeek-R1-Distill-Llama-70B | 93.4 | 94.5 |
これらの評価を実行する手順は、open-r1リポジトリで確認できます。
観察されたことの一つは、DeepSeekモデルの生成出力が非常に大きいことであり、モデルの評価自体が困難になるほどです。ここではOpenThoughtsデータセットにおけるDeepSeek-R1の応答長を示します:
R1の応答の分布は、平均応答長が6,000トークンで、一部の応答は20,000トークンを超えるほど非常に長いことを示しています。平均的なページには約500語が含まれ、1トークンは平均して1語よりやや少ないことに留意してください。つまり、多くの応答は10ページを超える長さになります。(出典: https://x.com/gui_penedo/status/1884953463051649052)
応答の長さはGPROトレーニングを難しくします。長い完了を生成する必要があり、最適化ステップで活性化/勾配を保存するためにGPUメモリの大部分を必要とするためです。
進捗を公開するために、open-r1評価リーダーボードを作成しました。コミュニティの皆さんは再現の取り組みを追跡できます(スペースはこちら):
トレーニングパイプライン
Open R1のリリースに続き、GRPO(Grouped Relative Policy Optimization)が最新のTRLリリース(バージョン0.14)に統合されました。この統合により、1つまたは複数の報酬関数やモデルを使って任意のモデルをトレーニングできます。GRPO実装はDeepSpeed ZeRO 1/2/3と統合されており、多くのGPUにスケール可能な並列トレーニングを実現し、オンライン学習手法の主なボトルネックである高速生成にvLLMを使用します。
from datasets import load_dataset
from trl import GRPOConfig, GRPOTrainer
dataset = load_dataset("trl-lib/tldr", split="train")
# Dummy reward: rewards completions that are close to 20 characters
def reward_len(completions, **kwargs):
return [-abs(20 - len(completion)) for completion in completions]
training_args = GRPOConfig(output_dir="Qwen2-0.5B-GRPO", logging_steps=10)
trainer = GRPOTrainer(
model="Qwen/Qwen2-0.5B-Instruct",
reward_funcs=reward_len,
args=training_args,
train_dataset=dataset,
)
trainer.train()
高メモリ使用量に関するいくつかの制限は依然として存在し、それらをプロファイリングして削減する取り組みが進められています。
合成データ生成
R1レポートで最もエキサイティングな発見の一つは、メインモデルを使って合成推論トレースを生成でき、そのデータセットでファインチューニングされた小型モデルがメインモデルと同様のパフォーマンス向上を実現できるというものでした。そこで当然、コミュニティが他のモデルをファインチューニングできるように、合成推論データセットの再作成も目指しています。
R1のような大規模モデルでは、主な課題は生成を効率的かつ高速にスケールアップすることです。1週間かけてさまざまなセットアップと構成を試行錯誤しました。
モデルは2台の8xH100ノードに収まるため、当然そのセットアップで実験を開始し、推論サーバーとしてvLLMを使用しました。しかし、この構成は理想的ではないことがすぐにわかりました。スループットが最適ではなく、GPU KVキャッシュがすぐにいっぱいになるため、並列リクエストは8件しか処理できません。キャッシュが満杯になると、大量のキャッシュを使用するリクエストはプリエンプトされ、設定でPreemptionMode.RECOMPUTEを使用している場合、より多くのVRAMが利用可能になったときにリクエストが後で再スケジュールされます。
次に、合計32GPUとなる4x 8xH100ノードのセットアップに切り替えました。これにより、32件のリクエストを並列実行するのに十分な余剰VRAMが確保され、キャッシュ使用率100%による再スケジュールはほとんど発生しません。
当初はリクエストのバッチでvLLMサーバーにクエリしていましたが、バッチ内の遅いリクエストが原因でGPU利用率が変動することにすぐに気づきました。前のバッチの最後のサンプルが完了するまで新しいバッチの処理が開始されないためです。バッチ推論をストリーミングに切り替えることで、GPU利用率が大幅に安定しました:
必要な変更は、vLLMサーバーにリクエストを送信するコードのみでした。バッチ推論のコード:
# send requests in batches of 500
for batch in batch_generator(dataset, bs=500):
active_tasks = []
for row in batch:
task = asyncio.create_task(send_requests(row))
active_tasks.add(task)
if active_tasks:
await asyncio.gather(*active_tasks)
リクエストをストリーミングする新しいコード:
active_tasks = []
for row in dataset:
# keep the total active requests under 500
while len(active_tasks) >= 500:
done, active_tasks = await asyncio.wait(
active_tasks,
return_when=asyncio.FIRST_COMPLETED
)
task = asyncio.create_task(send_requests(row))
active_tasks.add(task)
# wait for all remaining tasks to complete
if active_tasks:
await asyncio.gather(*active_tasks)
かなり安定した速度で生成していますが、長いクエリがプリエンプトされた際にCPUキャッシュへの切り替えがより良い戦略になるかどうかなど、さらに探求する余地があるかもしれません。
現在の推論コードはこちらで確認できます。
アウトリーチ
open-r1には幅広い関心が寄せられており、メディアからも注目されているため、過去1週間で複数のチームメンバーがニュースに登場しました:
- LewisがCNNに生出演: https://x.com/_lewtun/status/1884377909038833894?s=46
- ThomがBloombergに出演: https://x.com/Thom_Wolf/status/1884353433865777520
- LeandroがNPRのMoney Planetに出演(約21分頃): https://www.npr.org/2024/11/29/1215793948/deepseek-ai-china-us-semiconductors-stock-nvidia
その他の言及: Washington Post、Financial Times、Financial Times、Fortune、Fortune、The Verge、Financial Review、Tech Crunch、Die Zeit、Financial Times、New York Times、The Wall Street Journal、EuroNews、Barrons、New York Times、Vox、Nature、SwissInfo、Handelsblatt、Business Insider、IEEE Spectrum、MIT Tech Review、LeMonde。
DeepSeek-R1について学んだこと
コミュニティはDeepSeek-R1の結果とレポートの消化を続けていますが、リリースからわずか2週間でDeepSeekはより広い世間の注目を集めています。
R1への反応
リリース後の比較的平穏な1週間後、2週目には市場の大きな反応があり、複数のAI研究ラボからの対応を促しました:
- 月曜日に株式市場は打撃を受けたが、その後の数日で安定または回復した: https://x.com/KobeissiLetter/status/1883831022149927352
- OpenAIのCEOであるSam AltmanはDeepSeekを祝福し、新機能のリリース時期を前倒しすると発表した: https://x.com/sama/status/1884066337103962416
- OpenAIの最高研究責任者であるMark Chenは、DeepSeekがOpenAIがo1で使用したアイデアと類似したアイデアを発見したとコメントした: https://x.com/markchen90/status/1884303237186216272
- AnthropicのCEOであるDario Amodeiは、この機会に輸出規制を強調し、二極化または単極化した世界のイメージを描いた: https://x.com/DarioAmodei/status/1884636410839535967
並行して、いくつかの企業がさまざまなプラットフォームを通じてDeepSeekモデルを提供する取り組みを行いました(一部):
- Dell:Hugging Faceと提携し、Dell CEO兼創業者であるMichael DellがDeepSeek-R1を実行するオンプレミスソリューションを発表: https://x.com/MichaelDell/status/1884677233014398994
- AWS:Amazon CEOのAndy Jassyが、DeepSeek-R1がAmazon BedRockおよびSageMakerで利用可能になったと発表: https://x.com/ajassy/status/1885120938813120549
- Hyperbolic AI: https://hyperbolic.xyz/blog/deepseek-r1-now-hosted-on-hyperbolic
- Together AI: https://x.com/togethercompute/status/1882110120274088278
- Fireworks AI: https://fireworks.ai/models/fireworks/deepseek-r1
DeepSeek V3のトレーニング計算量
V3/R1のトレーニングコストに関する主張に大きな関心が寄せられています。正確な数字はそれほど重要ではないかもしれませんが、人々は概算計算を行ってその桁数を検証してきました。要するに、以下の議論で見られるように、数字は概ね正しい桁数を示しているようです:
- メリーランド大学の教授であるTom Goldstein: https://x.com/tomgoldsteincs/status/1884651376854122774
- MatXの創業者であるReiner PopeがLlama3とDeepSeek V3を比較: https://x.com/reinerpope/status/1884056274893168896
- OpenAI元Google Brain/DeepMindのLukas BeyerがMFUの起源に関する議論: https://x.com/giffmana/status/1884160434846224688
- SemiAnalysisがDeepSeekが利用可能なインフラストラクチャについて推測するレポートを公開: https://x.com/SemiAnalysis_/status/1885192148037112023
多くのグループがトレーニングパイプラインの再現に取り組んでいるため、モデルのトレーニング効率に関するさらなる証拠が得られるでしょう。
トレーニングデータセット
先週、DeepSeekがモデルのトレーニングにOpenAIの出力を利用していた可能性があるという憶測が浮上しました。例えばFinancial Timesを参照してください。ただし、これらの主張の結果がどうなるかは現時点では不明です。
コミュニティ
オープンソースコミュニティはDeepSeek-R1に対して非常に活発に活動しており、多くの人々がモデルに関連する興味深いプロジェクトを構築し始めています。
プロジェクト
より小規模で基本的な学習メカニズムを再現しようとするプロジェクトがいくつかあり、自宅で基本的な学習原理をテストできます。
- Will Brownは、TRLのGRPO Trainerを使ってLlama 1Bで最小限のトレーニング曲線を再現できることを示しました。
- TinyZeroは、30ドル未満と3Bベースモデルで「あはは」モーメントを自分で体験できることを示しています!
- Philipp SchmidもMini-R1に関するチュートリアルを公開し、「あは」モーメントの再現方法を再び示しました。
- より大きなモデル規模では、HKUSTの研究者が7B数学モデルでの推論の出現を示すブログ投稿を公開しました。
- Evolving LLMラボの人々はR1のマルチモーダル版に取り組み始めました: https://github.com/EvolvingLMMs-Lab/open-r1-multimodal
- StepanovはR1を使ってテキストからグラフを抽出する作業を開始しました:https://huggingface.co/blog/Ihor/replicating-deepseek-r1-for-information-extraction
データセット
コミュニティはR1に関連する多くのデータセット作成に忙しく取り組んでおり、主なハイライトは以下の通りです:
- bespokelabs/Bespoke-Stratos-17k:DeepSeek-R1を使って質問、推論トレース、回答のデータセットを作成するBerkeley Sky-T1データパイプラインの再現です。このデータはその後、R1論文と同様の蒸留アプローチを用いて7Bおよび32BのQwenモデルをファインチューニングするために使用されました。
- open-thoughts/OpenThoughts-114k:「数学、科学、コード、パズルをカバーする114kの高品質な例を含むオープンな合成推論データセット」。Open Thoughtsの取り組みの一環です。
- cognitivecomputations/dolphin-r1:DeepSeek-R1、Gemini flashからの完了と、R1スタイルモデルのトレーニングを支援することを目的としたDolphin chatからの200kサンプルを含む80万サンプルのデータセット。
- ServiceNow-AI/R1-Distill-SFT:現在17,000サンプルで、ServiceNow Language ModelsラボによるOpen-R1の取り組みを支援するデータ作成の取り組みです。
- NovaSky-AI/Sky-T1_data_17k:Sky-T1-32B-Previewのトレーニングに使用されたデータセット。このデータセットはo1スタイルの推論を再現するかなり初期の取り組みの一部でした。このデータセットでトレーニングされたモデルは450ドル未満でトレーニングされました。詳細はこのブログ投稿をご覧ください。
- Magpie-Align/Magpie-Reasoning-V2-250K-CoT-Deepseek-R1-Llama-70B:このデータセットはMagpieと、開始プロンプトなしで指示データを生成するアプローチを拡張して、応答に推論を含めます。指示はLlama 3.1 70B InstructおよびLlama 3.3 70B Instructによって生成され、応答はDeepSeek-R1-Distill-Llama-70Bによって生成されます
このリストはHub上の推論および問題解決関連のデータセットのごく一部のみをカバーしています。今後数週間でコミュニティが構築する他のデータセットを楽しみにしています。
今後の予定
私たちはまだ始まったばかりで、トレーニングパイプラインを完成させ、小規模なモデルで試し、スケールアップした推論パイプラインを使って高品質なデータセットを生成したいと考えています。貢献したい方は、GitHubのopen-r1リポジトリを確認するか、Hugging Face open-r1組織をフォローしてください。

)](https://wps.hkprog.org/storage/posts/images/458f9f1641f94eed3b29d7c7ff315fb859c64ca9.png)

0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.