DeepCoder-14B:開源AI編碼模型挑戰閉源的o3-mini和o1

DeepCoder-14B:開源AI編碼模型挑戰閉源的o3-mini和o1

Agentica 和 Together AI 釋出了名為 DeepCoder-14B 的開源人工智慧編碼模型,這是人工智慧社羣的一項重大進展。DeepCoder-14B 的程式碼生成能力與 OpenAI 的 o3-mini 和 o1 等閉源競爭對手不相上下,它將自己定位為專有模型的強大開源替代品。此外,這種新模型還確保了完全的透明度和開發人員的可訪問性。在本文中,我們將探討 DeepCoder-14B 的功能、訓練和基準分數,並將其實際效能與 o3-mini 和 o1 進行比較。

什麼是DeepCoder-14B?

DeepCoder-14B 是一個開源的人工智慧程式碼生成模型,擁有 140 億個引數。與其他專有模型不同,它具有完全的透明度,同時在功能和效能上與 OpenAI 的 o3-mini 和 o1 相當。因此,DeepCoder-14B 證明了開源人工智慧編碼模型無需大量計算資源就能與行業領先者競爭。

該模型採用了迭代上下文加長和超長過濾等創新訓練技術,使其能夠在 64K 上下文視窗中進行推理,儘管只在 32K 上下文中進行過訓練。除了令人印象深刻的編碼能力外,DeepCoder-14B 還在標準基準測試中展示了強大的數學推理能力。

DeepCoder-14B的主要功能

DeepCoder-14B 推進了開源人工智慧編碼模型的發展,其能力可與專有模型相媲美。

  • 先進的訓練技術:使用迭代上下文加長技術處理 64K 上下文。利用超長過濾實現 DeepCoder-14B 強化學習。
  • 高質量資料集:在 24K 個經過驗證的編碼問題上進行訓練。每個問題都有嚴格的質量控制和 5 個以上的測試案例。
  • 完全開源:所有程式碼和訓練資料完全透明。可在 GitHub 和 Hugging Face 上獲取。
  • 節省資源:支援各種量化方法,提高效率。與 TensorRT 和 vLLM 推理系統相容。

DeepCoder-14B基準效能

下面,我們將對 DeepCoder-14B 與領先的開源和專有程式碼生成工具進行全面比較。這些基準評估了編碼能力和跨領域問題解決能力等多個方面的效能。

模型 LCB (8/1/24-2/1/25) Codeforces Rating Codeforces Percentile HumanEval+ Pass@1 AIME 2024
DeepCoder-14B-Preview (ours) 60.6 1936 95.3 92.6 73.8
DeepSeek-R1-Distill-Qwen-14B 53.0 1791 92.7 92.0 69.7
o1-2024-12-17 (Low) 59.5 1991 96.1 90.8 74.4
o3-Mini-2025-1-31 (Low) 60.9 1918 94.9 92.6 60.0
o1-Preview 42.7 1658 88.5 89 40.0
Deepseek-R1 62.8 1948 95.4 92.6 79.8
Llama-4-Behemoth 49.4
DeepCoder-1.5B-Preview 25.1 963 28.5 73.0
Deepseek-R1-Distill-Qwen-1.5B 16.9 615 1.9 58.3 28.8

在多個基準測試中,DeepCoder-14B 都表現出了不俗的效能。它在 LiveCodeBench 上的得分率為 60.6%,幾乎與專有替代產品相當。該模型獲得了 1936 Codeforces 評級。它的 HumanEval+ 結果令人印象深刻。儘管資源有限,但這些成績使它躋身頂級模型行列。

該模型在 AIME 數學問題上的準確率高達 73.8%,超越了編碼能力。這證明了其卓越的遷移學習能力。我們的基準驗證了我們的訓練方法。它們證明了精心的資料整理是有效的。專業的微調技術是有效的。開源人工智慧編碼模型能夠以適中的規模實現最先進的結果。

DeepCoder成功的背後:沙盒環境和訓練方法

DeepCoder 的卓越效能源於其在培訓期間採用的創新程式碼評估方法。

創新的程式碼執行基礎架構

DeepCoder 傲人效能的核心在於其複雜的程式碼執行基礎架構,它能夠在強化學習過程中準確計算獎勵。該系統解決了程式碼生成工具訓練中最具挑戰性的問題之一:根據多個測試用例對數千個程式碼樣本進行可靠評估。以下是 DeepCoder 的架構和訓練如何幫助解決這一問題。

DeepCoder 訓練架構

讓我來詳細解釋一下。

1. 雙沙箱方法

DeepCoder 採用兩種互補的沙箱環境,以確保程式碼的可靠執行:

  1. 共同程式碼直譯器Together Code Interpreter):這種生產就緒的環境能以每個問題僅 3 美分的超經濟價格提供卓越的速度和安全性。團隊將這一解決方案擴充套件到可處理 100 多個併發沙箱,每分鐘可處理 1,000 多次執行。該沙箱可捕獲標準輸入/輸出流,同時與主機系統保持嚴格隔離。
  2. 原生代碼沙箱(Local Code Sandbox):為了實現最大程度的可重複性,該團隊開發了一種有防護欄的 Python 子程序實現方法,與 LiveCodeBench 的評估方法完全一致。這確保了所有報告結果與行業標準基準直接對應。

DeepCoder 採用兩種互補的沙箱環境

2. 有原則的獎勵設計

DeepCoder 不使用可能導致“獎勵駭客”的部分獎勵,而是採用二元結果的稀疏結果獎勵模型:

  • Success (1) :程式碼必須透過所有抽樣測試用例
  • Failure (0) :程式碼未透過任何測試或違反格式要求

對於具有大量測試套件的問題,系統會根據輸入複雜度,戰略性地抽取 15 個最具挑戰性的測試。

GRPO+:增強型訓練演算法

DeepCoder 在訓練中引入了 GRPO+(廣義報酬加權策略最佳化增強)演算法。GRPO+ 是 GRPO 演算法的重大演進,融合了 DAPO(擴散行為策略最佳化)研究的重要見解。

GRPO+:增強型訓練演算法

Source: Average training reward vs Training Steps

GRPO+ 的關鍵演算法創新

團隊進行了四項關鍵修改,以實現穩定的大規模訓練:

  1. 消除熵損失:透過消除經常導致訓練崩潰的熵損失項,GRPO+ 在整個訓練過程中保持了一致的探索。
  2. 消除 KL 損失:透過消除參考策略計算,使模型不再受限於原始 SFT 模型的信任區域,從而提高了效能和訓練速度。
  3. 超長過濾:這項技術可以防止對截斷序列進行懲罰,從而保留模型的長上下文推理能力。值得注意的是,儘管 DeepCoder 只在 32K 序列上進行過訓練,但它仍能泛化到 64K 上下文。
  4. 高剪輯:透過調整代理損失函式的上界,GRPO+ 鼓勵更多的探索,同時在整個訓練過程中保持穩定的熵水平。

這些演算法上的改進共同創造了 DeepCoder 獨特的學習模式:穩步增長的響應長度、穩定的獎勵曲線和一致的標記級熵–所有這些都為其卓越的編碼能力做出了貢獻。

更智慧的培訓:同時擴充套件上下文和推理

訓練大型模型已經是一項艱鉅的任務,而訓練它們在較長的上下文中進行推理則是一項更大的挑戰。大多數模型要麼在推理深度上打折扣,要麼在上下文規模增大時碰壁。

DeepCoder 採用雙管齊下的訓練方法迎刃而解:

1. 迭代上下文加長

模型不是立即跳轉到長上下文,而是分階段進行訓練:

  • 從 16K 位元組開始
  • 擴充套件到 32K
  • 在 64K 時進行評估–儘管它從未接受過這種長度的訓練!

這種循序漸進的擴充套件方式讓模型學會了如何 “在更長的文件中思考”,而不是簡單地記憶標記跨度。結果不言自明:

  • 16K 上下文: 在 LiveCodeBench 上的得分率為 54
  • 32K 上下文: 58%
  • 64K 上下文 60.6% (儘管該長度下的訓練為零)

迭代上下文加長

2. 超長過濾(受DAPO啟發)

為避免向模型輸入嘈雜、過長的樣本而影響學習,DeepCoder 採用了超長過濾技術,該技術的靈感來自 DAPO。這將過濾掉超過最佳長度的訓練樣本,有助於保持模型學習內容的清晰度。

這些策略共同確保了模型不僅能成長,還能變得更聰明。

資料整理:從混亂到清晰、驗證的編碼問題

面對現實吧–網際網路上的資料集編碼是一團糟!無論是從 GitHub、線上評委還是論壇上抓取的資料集,通常都是不完整、有漏洞或不一致的。這對強化學習(RL)來說是個問題,因為強化學習依賴於可驗證的、一致的獎勵訊號。

為了解決這個問題,AgenticAI 團隊建立了一個定製的資料整理管道,重點包括

  • 只包含透過所有測試用例的正式解決方案
  • 確保每個問題至少有 5 個高質量的單元測試
  • 重複訓練集和測試集,以避免洩漏或評估膨脹

下面的程式碼顯示了其資料處理管道中使用的核心驗證邏輯。該功能根據質量標準對每個問題進行檢查,然後才允許其進入資料集:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Simplified data processing workflow using custom data curation pipeline
def validate_problem(problem):
if problem.test_cases < 5:
reject()
if not passes_all_tests(problem.solution):
reject()
if exists_in_test_split(problem):
reject()
return problem
# Simplified data processing workflow using custom data curation pipeline def validate_problem(problem): if problem.test_cases < 5: reject() if not passes_all_tests(problem.solution): reject() if exists_in_test_split(problem): reject() return problem
# Simplified data processing workflow using custom data curation pipeline
def validate_problem(problem):
if problem.test_cases < 5: 
reject()
if not passes_all_tests(problem.solution):
reject()
if exists_in_test_split(problem):
reject()
return problem

這樣就產生了一個包含 24,000 個編碼問題的乾淨、可驗證的資料集,非常適合 RL 微調。這種細緻的過濾確保了訓練過程中的獎勵能夠真正反映正確性,而不是偶然性或過度擬合。

DeepCoder-14B大規模強化學習:rLLM框架

評估程式碼不同於評估文字。您不能僅僅比較標記的相似性–您需要執行程式碼並測試其輸出,最好是在邊緣情況下測試數千次。這就是 DeepCoder 的開源 RL 引擎 rLLM 的用武之地。

以下是 rLLM 脫穎而出的原因:

  • 基於 verl 框架構建(將端到端訓練時間縮短達 2 倍),這是一個專為程式碼設計的高效訓練引擎
  • 每分鐘可執行 1,000 多個單元測試
  • 使用 100 多個並行沙箱同時評估提交的測試結果
  • 同時支援
    • 共同程式碼直譯器(便宜、快速,0.03 美元/問題)
    • 本地沙盒映象 LiveCodeBench,以實現可重複性

這種基礎設施不僅速度快,而且使大規模、可驗證的 RL 培訓變得切實可行。沒有手忙腳亂,沒有近似值;真實的程式碼、真實的測試、真實的結果。

想試試嗎?請訪問程式碼倉庫:github.com/agentica-project/rllm

這樣就產生了一個包含 24,000 個編碼問題的乾淨、可驗證的資料集,非常適合 RL 微調。這種細緻的過濾確保了訓練過程中的獎勵能夠真正反映正確性,而不是偶然性或過度擬合。

親身體驗DeepCoder

雖然 DeepCoder 的效能指標令人印象深刻,但它對人工智慧社羣的真正價值在於其可訪問性和可重複性。本節將介紹使用這一創新模型的實際操作,從初始設定到高階訓練配置。

第 1 步:設定環境

DeepCoder 的開發團隊針對 Python 3.10 對程式碼庫進行了最佳化,確保穩定性的同時充分利用現代語言的特性。安裝過程從建立專用的 Conda 環境開始:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
conda create -n rllm python=3.10 -y
conda activate rllm
conda create -n rllm python=3.10 -y conda activate rllm
conda create -n rllm python=3.10 -y
conda activate rllm

導航到 rllm 目錄後,你需要安裝 verl 強化學習框架和主要包:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cd rllm
pip install -e ./verl
pip install -e .
cd rllm pip install -e ./verl pip install -e .
cd rllm
pip install -e ./verl
pip install -e .

這種安裝模式反映了模組化架構,verl 作為專門的 DeepCoder-14B 強化學習引擎,為其令人印象深刻的程式碼生成能力提供動力。

第 2 步:準備訓練資料

DeepCoder 的優勢之一在於其精心策劃的資料集。儲存庫既提供原始訓練資料,也提供預處理指令碼,以便將其轉換為最佳化的訓練格式。

要開始使用這些資料,請:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# First, download the curated datasets from GDrive
python scripts/data/download_datasets.py
# Then generate optimized parquet files for training
python scripts/data/deepcoder_dataset.py # For DeepCoder
# or
python scripts/data/deepscaler_dataset.py # For DeepScaleR
# First, download the curated datasets from GDrive python scripts/data/download_datasets.py # Then generate optimized parquet files for training python scripts/data/deepcoder_dataset.py # For DeepCoder # or python scripts/data/deepscaler_dataset.py # For DeepScaleR
# First, download the curated datasets from GDrive
python scripts/data/download_datasets.py
# Then generate optimized parquet files for training
python scripts/data/deepcoder_dataset.py  # For DeepCoder
# or
python scripts/data/deepscaler_dataset.py  # For DeepScaleR

這些預處理步驟實施了前面提到的嚴格資料質量控制,確保所有程式碼示例符合 DeepCoder-14B 強化學習的嚴格要求。

第 3 步:不同規模的訓練選項

DeepCoder 靈活的訓練架構可容納各種計算資源,使其既適用於個人研究人員,也適用於擁有大量基礎設施的大型團隊。

針對個人研究人員

能夠使用單臺高效能機器的研究人員可以從以下方面開始訓練:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
export MODEL_PATH="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"./scripts/deepcoder/train/file.sh --model $MODEL_PATH
export MODEL_PATH="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"./scripts/deepcoder/train/file.sh --model $MODEL_PATH
export MODEL_PATH="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"./scripts/deepcoder/train/file.sh --model $MODEL_PATH

這種單節點配置為試驗框架或針對特定領域進行微調提供了一個絕佳的切入點。

針對研究團隊

DeepCoder 的分散式訓練功能可讓大型實驗受益匪淺。該配置使用 Ray 來協調多臺機器上的訓練:

  1. 頭部節點必須初始化 Ray 叢集:export VLLM_ATTENTION_BACKEND=XFORMERSray start --head
  2. 然後,工作節點將連線到該協調器:export VLLM_ATTENTION_BACKEND=XFORMERSray start --address=[HEAD_NODE_ADDRESS] (輸出 VLLM_ATTENTION_BACKEND=XFORMERSray 啟動 --head)
  3. 叢集準備就緒後,就可以啟動訓練:./scripts/deepcoder/train/file.sh --model [CHECKPOINT_PATH] 。

這種可擴充套件的方法有助於實現 DeepCoder 的突破性效能,使團隊能夠有效地在更長的上下文長度和更大的資料集上進行訓練。

第 4 步:嚴格的評估框架

DeepCoder 的效能宣告由一個全面的評估框架提供支援,該框架可自動執行多個 vLLM 例項來測試模型的能力:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
./scripts/eval/eval_model.sh --model [CHECKPOINT_PATH] \
--datasets [DATASET1] [DATASET2] \
--output-dir [OUTPUT_DIR] \
--n [N_PASSES] \
--tp [TENSOR_PARALLEL_SIZE] \
--max-length [MAX_CONTEXT_LENGTH]
./scripts/eval/eval_model.sh --model [CHECKPOINT_PATH] \ --datasets [DATASET1] [DATASET2] \ --output-dir [OUTPUT_DIR] \ --n [N_PASSES] \ --tp [TENSOR_PARALLEL_SIZE] \ --max-length [MAX_CONTEXT_LENGTH]
./scripts/eval/eval_model.sh --model [CHECKPOINT_PATH] \
--datasets [DATASET1] [DATASET2] \
--output-dir [OUTPUT_DIR] \
--n [N_PASSES] \
--tp [TENSOR_PARALLEL_SIZE] \
--max-length [MAX_CONTEXT_LENGTH]

這種評估方法與 LiveCodeBench 方法如出一轍,可確保報告的指標準確反映具有挑戰性的編碼任務的實際效能。

DeepCoder-14B 上機效能

在本節中,我們將探討 DeepCoder-14B 能否以清晰和初學者友好的方式解釋基本程式設計概念。

任務:解釋程式設計概念

讓我們使用 DeepCoder-14B 來解釋雜湊表的工作原理,並看看它能否生成一個 Python 示例。

程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
response = llm.create_chat_completion(
messages = [
{
"role": "user",
"content": "Explain how a hash table works with an example in Python."
}
]
)
print(response['choices'][0]['message']['content'])
response = llm.create_chat_completion( messages = [ { "role": "user", "content": "Explain how a hash table works with an example in Python." } ] ) print(response['choices'][0]['message']['content'])
response = llm.create_chat_completion(
messages = [
{
"role": "user",
"content": "Explain how a hash table works with an example in Python."
}
]
)
print(response['choices'][0]['message']['content'])

點評:

DeepCoder-14B 對雜湊表的功能進行了深思熟慮、循序漸進的概念分解,令人印象深刻。以下是其中的亮點:

  • 個性化推理:回答的感覺就像一個初學者在大聲講述這個概念,這為解釋增添了親切感和教育性。
  • 詳細的理論:涵蓋了雜湊、碰撞、鏈式、開放定址等關鍵概念,以及在 Python 中透過字典實現這些概念的現實世界。
  • 結構化方法:該模型沒有立即跳入程式碼,而是列出了邏輯和設計步驟,如建立陣列、定義雜湊函式和處理碰撞。
  • 缺少程式碼塊:雖然它承諾用 Python 演示一個簡單的雜湊表,但程式碼片段並未包含在此輸出中。要獲得完整的答案,可以提示它“繼續 Python 程式碼示例”。

推理效能說明:雖然模型輸出的概念性很強,但延遲卻非常高(總耗時約 11 分鐘),這表明 DeepCoder-14B 可能最適合內容生成、輔導或文件等非即時應用。

DeepCoder-14B與o3-mini和o1:效能比較

在本節中,我們將比較 DeepCoder-14B 與 OpenAI 的 o1 和 03-mini 在程式碼生成和錯誤修復這兩項常見程式設計任務中的表現。我們將給 DeepCoder-14B、o3-mini(用 Phi-2 模擬)和 o1(用 LLaMA-2 7B 模擬)分配同樣的兩項任務,看看模型的大小和設計如何影響程式碼質量、解釋深度和推理能力。從生成一個簡單函式到識別遞迴程式碼中的邏輯錯誤,這種比較將讓我們更清楚地瞭解大型模型的真正優勢和小型模型的優勢。

任務 1:程式碼生成工具比較 – DeepCoder vs o3-mini (Phi-2)

讓我們使用 DeepCoder-14B 生成一個查詢 1 到 100 之間所有素數的 Python 函式,並將其響應與 o3-mini 進行比較。

DeepCoder-14B 生成程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
response = llm.create_chat_completion(
messages = [
{
"role": "user",
"content": "Write a Python function to find prime numbers between 1 and 100."
}
]
)
print("DeepCoder Output:\n", response['choices'][0]['message']['content'])
response = llm.create_chat_completion( messages = [ { "role": "user", "content": "Write a Python function to find prime numbers between 1 and 100." } ] ) print("DeepCoder Output:\n", response['choices'][0]['message']['content'])
response = llm.create_chat_completion(
messages = [
{
"role": "user",
"content": "Write a Python function to find prime numbers between 1 and 100."
}
]
)
print("DeepCoder Output:\n", response['choices'][0]['message']['content'])

Phi-2 (Simulating o3-mini) 生成程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2")
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", device_map="auto")
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer
prompt = "Write a Python function to find prime numbers between 1 and 100."
output = pipe(prompt, max_new_tokens=150)[0]["generated_text"]
print("Phi-2 Output:\n", output)
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2") model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", device_map="auto") pipe = pipeline("text-generation", model=model, tokenizer=tokenizer prompt = "Write a Python function to find prime numbers between 1 and 100." output = pipe(prompt, max_new_tokens=150)[0]["generated_text"] print("Phi-2 Output:\n", output)
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2")
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", device_map="auto")
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer
prompt = "Write a Python function to find prime numbers between 1 and 100."
output = pipe(prompt, max_new_tokens=150)[0]["generated_text"]
print("Phi-2 Output:\n", output)

評價:

DeepCoder-14B 深入淺出、循序漸進地剖析了尋找質數背後的邏輯,模仿了初學者推理問題的方式。雖然它很有見地,但並不返回實際程式碼,這限制了它在直接執行方面的實用性。相比之下,Phi-2 (o3-mini) 不需要任何解釋,就能提供一個簡潔、正確的 Python 函式,快速、高效,隨時可以執行。DeepCoder 更適合深度教學,而 Phi-2 則更擅長實用的編碼速度和清晰度。

任務 2:錯誤修復與推理 – DeepCoder vs o1(LLaMA-2 7B)

現在,讓我們用一項經典的除錯任務來挑戰 DeepCoder-14B。我們將向它提供一個有錯誤的遞迴階乘函式,要求它修復程式碼並解釋出錯的原因。然後,我們將把同樣的任務交給 OpenAI 的 o1 模型(由 LLaMA-27B 模擬),並比較它們的反應。

錯誤程式碼:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
buggy_code = """
def factorial(n):
if n == 0:
return 0
else:
return n * factorial(n-1)
"""
buggy_code = """ def factorial(n): if n == 0: return 0 else: return n * factorial(n-1) """
buggy_code = """
def factorial(n):
if n == 0:
return 0
else:
return n * factorial(n-1)
"""

DeepCoder-14B:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
response = llm.create_chat_completion(
messages = [
{
"role": "user",
"content": f"This code has a bug. Fix it and explain the correction:\n{buggy_code}"
}
]
)
print("DeepCoder Output:\n", response['choices'][0]['message']['content'])
response = llm.create_chat_completion( messages = [ { "role": "user", "content": f"This code has a bug. Fix it and explain the correction:\n{buggy_code}" } ] ) print("DeepCoder Output:\n", response['choices'][0]['message']['content'])
response = llm.create_chat_completion(
messages = [
{
"role": "user",
"content": f"This code has a bug. Fix it and explain the correction:\n{buggy_code}"
}
]
)
print("DeepCoder Output:\n", response['choices'][0]['message']['content'])

LLaMA-2 7B (simulating o1):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-chat-hf")
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-chat-hf", device_map="auto")
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
prompt = "This code has a bug. Fix it and explain the correction:\n" + buggy_code
output = pipe(prompt, max_new_tokens=200)[0]["generated_text"]
print("LLaMA-2 Output:\n", output)
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-chat-hf") model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-chat-hf", device_map="auto") pipe = pipeline("text-generation", model=model, tokenizer=tokenizer) prompt = "This code has a bug. Fix it and explain the correction:\n" + buggy_code output = pipe(prompt, max_new_tokens=200)[0]["generated_text"] print("LLaMA-2 Output:\n", output)
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-chat-hf")
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-chat-hf", device_map="auto")
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer)
prompt = "This code has a bug. Fix it and explain the correction:\n" + buggy_code
output = pipe(prompt, max_new_tokens=200)[0]["generated_text"]
print("LLaMA-2 Output:\n", output)

點評:

在這個任務中,DeepCoder-14B 和 o1(LLaMA-2 7B)都正確地發現了階乘函式中的錯誤–認識到基例應該返回 1 而不是 0。DeepCoder-14B 透過邏輯推理,強調了錯誤的基例如何導致錯誤的結果,特別是 n=1 時,表現出很強的推理能力。

然而,它的輸出存在一個關鍵缺陷:重複迴圈“Wait, no”,這降低了可讀性,並使響應感覺不穩定。相比之下,o1 的響應簡潔、乾淨、正確,通常包括固定程式碼和簡要解釋。雖然沒有 DeepCoder 的推理深度,但 o1 的可靠性和清晰度使其更適合實際使用,尤其是在部署或教育環境中。

DeepCoder-14B的未來發展

雖然目前的成果主要集中在編碼方面,但該團隊計劃

  • 透過動態 NTK 縮放將上下文視窗擴充套件到 128K。
  • 開發多模型推理能力。
  • 為安全審計和遺留程式碼現代化建立專用變體。

這一版本標誌著向高階人工智慧編碼工具民主化邁出了重要一步,它為研究人員和開發人員提供了

  • 與專有模型效能相匹配的完整訓練配方。
  • 大規模可驗證 RL 的基礎設施。
  • 未來程式合成開源進展的基線。

該模型的麻省理工學院許可證確保了商業和研究使用不受限制,促進了整個人工智慧生態系統的創新。DeepCoder-14B 兼具極具競爭力的效能和完全的透明度,為開源人工智慧編碼模型的開發確立了新的標準。

DeepCoder-14B:訪問和使用

DeepCoder 的一切都圍繞著透明度和社羣展開:

這使得它成為以下人員的絕佳資源

  • 探索 RL 微調的研究人員
  • 構建自定義編碼代理的駭客和開發人員
  • 展示真實世界中人工智慧編碼系統如何構建和測試的教育工作者

小結

在這個由封閉牆和黑盒模型主導的時代,DeepCoder-14B 是一股新鮮空氣。它表明,開源人工智慧編碼模型可以擴充套件、競爭和創新,而無需躲在應用程式介面或付費牆後面。從上下文擴充套件到數學泛化,從經過驗證的資料集到高速沙盒,DeepCoder 的一切都讓人感到深思熟慮、用心良苦、社羣至上。

希望改進編碼工作流程的開發人員可以立即開始使用 DeepCoder。該模型在競賽級編碼任務上的出色表現使其適用於從自動程式碼補全到演算法問題解決等各種應用。如果您正在構建人工智慧輔助開發的未來,DeepCoder-14B 不僅值得一試,還可能成為您的新基準。

評論留言