项目简介
Yi-Coder-9B-Chat是一个开源的代码语言模型项目,隶属于Yi-Coder系列。这个项目致力于在少于10亿个参数的情况下,实现世界一流的代码生成性能。该模型特别擅长理解长文本,其上下文长度最大可达128K个token。
主要特点
- 长文本理解能力:Yi-Coder系列模型能够处理长达128K个tokens的上下文,适用于复杂的代码场景。
- 多语言支持:Yi-Coder目前支持52种主要编程语言,包括Java、Python、JavaScript、C++、Go、SQL、HTML、CSS等,从而满足广泛的编程需求。
详情可以在Yi-Coder博客及其README文件中查看。
模型种类
Yi-Coder系列提供多种模型以供下载和使用,每种模型都有不同的参数量级和应用场景:
- Yi-Coder-9B-Chat: 专为聊天场景设计,具备128K上下文长度,可从Hugging Face、ModelScope和wisemodel下载。
- Yi-Coder-1.5B-Chat: 适用于较小规模聊天场景,支持相同上下文长度。
- Yi-Coder-9B: 基础模型,适用于通用代码生成任务。
- Yi-Coder-1.5B: 较小参数量的基础模型。
基准测试
在LiveCodeBench的评测中,Yi-Coder-9B-Chat表现出色,以23%的通过率成为少于10亿参数的模型中唯一超过20%的模型。这一成绩优于33B参数量的DeepSeekCoder(22.3%)、9B的CodeGeex4(17.8%)以及更大模型CodeLLama-34B(13.3%)和CodeQwen1.5-7B(12%)。
快速开始
用户可以通过Python库transformers来运行Yi-Coder模型。以下是一个简单的示例,用于实现快速排序算法的代码生成:
from transformers import AutoTokenizer, AutoModelForCausalLM
device = "cuda"
model_path = "01-ai/Yi-Coder-9B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto").eval()
prompt = "Write a quick sort algorithm."
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=1024,
eos_token_id=tokenizer.eos_token_id
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
有关更多信息,请访问Yi-Coder的README文档。