🚀 Replit Code V-1.5 3B
Replit Code V-1.5 3B 是一個專注於代碼補全的大語言模型,它基於大規模代碼數據集進行訓練,能為多種編程語言提供高效準確的代碼補全功能。
✨ 主要特性
- 專注代碼補全:專門針對代碼補全任務進行訓練,能有效提升編程效率。
- 多語言支持:支持 30 種編程語言,涵蓋了常見的開發語言。
- 大上下文長度:上下文大小為 4096 個標記,能更好地理解代碼上下文。
📦 安裝指南
你需要安裝以下依賴的最新版本:
einops
torch
transformers
💻 使用示例
基礎用法
你可以使用 transformers
庫來生成代碼,示例如下:
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('replit/replit-code-v1_5-3b', trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained('replit/replit-code-v1_5-3b', trust_remote_code=True)
x = tokenizer.encode('def fibonacci(n): ', return_tensors='pt')
y = model.generate(x, max_length=100, do_sample=True, top_p=0.95, top_k=4, temperature=0.2, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)
generated_code = tokenizer.decode(y[0], skip_special_tokens=True, clean_up_tokenization_spaces=False)
print(generated_code)
你可以嘗試不同的解碼方法和參數,以獲得最適合你用例的結果。
高級用法
使用 Triton 實現的 Flash Attention:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig
config = AutoConfig.from_pretrained(
"replit/replit-code-v1_5-3b",
trust_remote_code=True
)
config.attn_config['attn_impl'] = 'triton'
tokenizer = AutoTokenizer.from_pretrained('replit/replit-code-v1_5-3b', trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained('replit/replit-code-v1_5-3b', config=config, trust_remote_code=True)
model.to(device='cuda:0', dtype=torch.bfloat16)
x = tokenizer.encode('def fibonacci(n): ', return_tensors='pt').to(device='cuda:0')
x = x.to(device='cuda:0')
y = model.generate(x, max_length=100, do_sample=True, top_p=0.95, top_k=4, temperature=0.2, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)
generated_code = tokenizer.decode(y[0], skip_special_tokens=True, clean_up_tokenization_spaces=False)
print(generated_code)
建議嘗試調整 temperature
和 reptition_penalty
參數,以在你的用例中獲得最佳性能。
📚 詳細文檔
模型描述
Replit Code v1.5 是一個具有 33 億參數的因果語言模型,專注於 代碼補全。
該模型在 bfloat16
中對 1T 代碼標記進行訓練(約 200B 標記,共 5 個週期,包括線性冷卻),涵蓋 30 種編程語言。訓練數據來自 Bigcode 的 Stack Dedup 數據集 中許可寬鬆的代碼子集、同一 Stack Dedup 數據集中 Markdown 和 reStructuredText 子集的過濾自然語言樣本,以及來自 RedPajama 的 StackExchange 數據集 的面向開發者的樣本,該樣本源自 Stack Exchange Inc 的 Stack Exchange 數據轉儲。
這 30 種編程語言包括:
Java, JavaScript, C, PHP, Python, C++, C#, TypeScript, Go, CSS, HTML, Rust, Ruby, Swift, Scala, Shell, Lua, Perl, Haskell, JSX, Julia, Common Lisp, OCaml, Solidity, Scheme, R, Zig, SQL, Racket, D
模型的上下文大小為 4096 個標記。我們使用 GPTNeoX 分詞器,其自定義訓練和優化的詞彙表包含 32768 個標記。這種自定義詞彙表在保持或提高訓練語料庫覆蓋率的同時,實現了個位數的壓縮率。
該模型在 MosaicML 平臺上使用 128 個 H100 - 80GB GPU 進行訓練,使用了他們基於 PyTorch 構建的 LLM Foundry 和 Composer 訓練庫。
預期用途
Replit 希望該模型能被任何人用作特定應用微調的基礎模型,對商業用途沒有嚴格限制。
該模型專門針對代碼補全任務進行訓練。
侷限性
即使應用了數據清洗以及毒性和褻瀆過濾,預訓練數據集仍可能包含冒犯性或不適當的內容,這些內容可能會反映在模型生成的文本中。建議用戶在生產系統中使用時保持合理的謹慎。請勿將其用於可能對個人或群體造成傷害或困擾的任何應用程序。
📄 許可證
本項目採用 Apache-2.0 許可證。
屬性 |
詳情 |
模型類型 |
因果語言模型 |
訓練數據 |
Bigcode 的 Stack Dedup 數據集、RedPajama 的 StackExchange 數據集 |
⚠️ 重要提示
預訓練數據集可能包含冒犯性或不適當內容,使用時需謹慎。
💡 使用建議
嘗試調整 temperature
和 reptition_penalty
參數,以獲得最佳性能。