🚀 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
参数,以获得最佳性能。