Yi-Coder-9B项目介绍
Yi-Coder是一个开源的代码语言模型系列,该系列模型在参数数目少于10亿的情况下,依然能够提供最先进的编程性能。Yi-Coder在理解长语境方面表现突出,其最大语境长度达到了128K tokens。同时,它支持52种主要的编程语言,包括Java、Python、JavaScript、C++等。
项目特点
- 长语境处理:Yi-Coder可以处理长达128K tokens的上下文,这使得它在复杂和长时间的代码分析与生成任务中表现优异。
- 多语言支持:它支持包括Java、Python、JavaScript在内的52种编程语言,覆盖范围广,能够满足多样化的编程需求。
模型介绍
Yi-Coder提供了多个版本的模型,以满足不同的需求。主要模型包括:
- Yi-Coder-9B-Chat:适用于对话式的代码生成场景。
- Yi-Coder-1.5B-Chat:更轻量级的对话式模型。
- Yi-Coder-9B:基础版本,用于通用代码生成。
- Yi-Coder-1.5B:基础的轻量级模型。
所有这些模型都可以在Hugging Face、ModelScope和wisemodel平台上下载。
基准测试
在LiveCodeBench平台的测试中,Yi-Coder-9B-Chat模型表现突出,其通过率达到了23%,成为唯一一个在10亿参数以下模型中通过率超过20%的模型。相比之下,它的性能超过了诸如DeepSeekCoder-33B-Ins、CodeGeex4-9B和CodeLLama等更大规模的模型。
快速开始
用户可以使用transformers库轻松地加载和运行Yi-Coder模型。以下是一个简单的用例,该示例展示了如何使用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 = "编写一个快速排序算法。"
messages = [
{"role": "system", "content": "你是一个有用的助手。"},
{"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进行详细了解。