🚀 Refact-1.6B-fim - GGUF
Refact-1.6B-fim - GGUF是一款代碼生成模型,在代碼補全和聊天交互方面表現出色。它在多個代碼評估指標上超越了同類型模型,且支持多語言,可在IDE中為開發者提供高效的代碼補全服務。
🚀 快速開始
你可以通過下載Refact插件立即開始使用該模型,也可以使用開源Docker容器自行託管模型。
代碼補全示例
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "smallcloudai/Refact-1_6B-fim"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).to(device)
prompt = '<fim_prefix>def print_hello_world():\n """<fim_suffix>\n print("Hello world!")<fim_middle>'
inputs = tokenizer.encode(prompt, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_length=100, temperature=0.2)
print("-"*80)
print(tokenizer.decode(outputs[0]))
聊天交互示例
prompt_template = "<empty_output>SYSTEM {system}\n" \
"<empty_output>USER {query}\n" \
"<empty_output>ASSISTANT"
prompt = prompt_template.format(system="You are a programming assistant",
query="How do I sort a list in Python?")
✨ 主要特性
- 高性能:經過在生成數據上的微調,該模型在
HumanEval
等指標上超越了Replit 3b、Stability Code 3b等模型,幾乎超越了比它大十倍的StarCoder模型。
- 多語言支持:支持多種編程語言,可在不同的編程場景中使用。
- 聊天功能:除了代碼補全,該模型還能作為聊天機器人,在聊天交互中表現良好。
📦 安裝指南
暫未提供相關安裝步驟。
💻 使用示例
基礎用法
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "smallcloudai/Refact-1_6B-fim"
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).to(device)
prompt = '<fim_prefix>def print_hello_world():\n """<fim_suffix>\n print("Hello world!")<fim_middle>'
inputs = tokenizer.encode(prompt, return_tensors="pt").to(device)
outputs = model.generate(inputs, max_length=100, temperature=0.2)
print("-"*80)
print(tokenizer.decode(outputs[0]))
高級用法
prompt_template = "<empty_output>SYSTEM {system}\n" \
"<empty_output>USER {query}\n" \
"<empty_output>ASSISTANT"
prompt = prompt_template.format(system="You are a programming assistant",
query="How do I sort a list in Python?")
📚 詳細文檔
模型信息
屬性 |
詳情 |
模型類型 |
Refact-1.6B-fim |
訓練數據 |
書籍、arxiv論文、C4數據集、falcon-refinedweb、維基百科、GitHub問題、Stack Markdown、寬鬆許可的GitHub代碼自制數據集、bigcode/the-stack-dedup、rombodawg/2XUNCENSORED_MegaCodeTraining188k、bigcode/commitpackft |
評估指標 |
code_eval |
庫名稱 |
transformers |
模型性能
任務 |
數據集 |
指標 |
值 |
文本生成 |
openai_humaneval (HumanEval) |
pass@1 (T=0.01) |
32.0 |
文本生成 |
openai_humaneval (HumanEval) |
pass@1 (T=0.2) |
31.5 |
文本生成 |
openai_humaneval (HumanEval) |
pass@10 (T=0.8) |
53.0 |
文本生成 |
openai_humaneval (HumanEval) |
pass@100 (T=0.8) |
76.9 |
文本生成 |
bigcode/humanevalpack (HumanEvalSynthesize Python) |
pass@1 (T=0.2) |
35.8 |
文本生成 |
bigcode/humanevalpack (HumanEvalSynthesize JavaScript) |
pass@1 (T=0.2) |
31.6 |
... |
... |
... |
... |
架構
預訓練
- 數據集:使用了包含寬鬆許可代碼的自有數據集和開放文本數據集。
- 過濾規則:僅使用英語文本,只包含與計算機科學相關的主題,並進行了大量去重處理。
- 文本與代碼比例:50:50
- 訓練令牌數:1.2T
微調
- 數據集:使用了開放的代碼指令跟隨數據集和合成數據集。
- 微調策略:通過添加空補全、單行補全、多行補全等數據,使模型在代碼補全時更實用。
- 最終模型:經過多次嘗試,最佳嘗試使用了40B令牌。
🔧 技術細節
量化變體
- 傳統量化:Q4_0、Q4_1、Q5_0、Q5_1和Q8是傳統的量化類型,雖然是舊類型,但仍然完全受支持。
- K量化:K量化旨在通過在模型的特定部分使用不同級別的量化來優化性能、文件大小和內存負載。如果可能,建議使用K量化。
模型侷限性和偏差
該模型在英語文本上進行訓練,對於非英語語言的性能可能較低。
📄 許可證
該模型遵循BigScience OpenRAIL-M v1許可協議。
🤝 支持作者
作者正在籌備贊助/眾籌活動,以繼續提供有價值的資源和維護模型。你可以通過以下鏈接支持作者的工作: