Magicoder 项目介绍
什么是Magicoder?
Magicoder是一个由OSS-Instruct方法支持的模型系列。这是一种创新的方式,通过使用开源代码片段来启发大型语言模型(LLM),生成低偏差和高质量的代码指令数据。该项目主要解决了语言模型在生成指令数据时固有的偏差问题,通过利用丰富的开源参考资料,生成更加多样化、真实并且可控的内容。
为什么Magicoder很特别?
Magicoder中使用的OSS-Instruct方法极大地降低了模型合成指令数据的偏差。与许多其他项目相比,Magicoder在生成代码的准确性和质量上都表现出色。例如,Magicoder-S-DS-6.7B在HumanEval测试中的评分达到76.8,超过了gpt-3.5-turbo-1106和Gemini Ultra等主流模型。
Magicoder的模型家族
Magicoder系列包括不同尺寸和性能的多个模型:
- Magicoder-CL-7B和Magicoder-S-CL-7B模型均基于Llama2架构,适合不同的使用需求。
- Magicoder-DS-6.7B和其增强版本Magicoder-S-DS-6.7B则基于DeepSeek模型,在多个基准测试中表现出色。
快速上手
Magicoder提供了易用的API,用户可以快速上手。以下是一个简单的Python代码示例,用于生成一个TODO列表应用的API:
from transformers import pipeline
import torch
MAGICODER_PROMPT = """You are an exceptionally intelligent coding assistant that consistently delivers accurate and reliable responses to user instructions.
@@ Instruction
{instruction}
@@ Response
"""
instruction = "Implement a high-level API for a TODO list application. The API takes as input an operation request and updates the TODO list in place. If the request is invalid, raise an exception."
prompt = MAGICODER_PROMPT.format(instruction=instruction)
generator = pipeline(
model="ise-uiuc/Magicoder-S-DS-6.7B",
task="text-generation",
torch_dtype=torch.bfloat16,
device_map="auto",
)
result = generator(prompt, max_length=2048, num_return_sequences=1, temperature=0.0)
print(result[0]["generated_text"])
数据集
- Magicoder-OSS-Instruct-75K 数据集:使用OSS-Instruct通过gpt-3.5-turbo-1106生成,是训练Magicoder和Magicoder-S系列的重要数据集。
- Magicoder-Evol-Instruct-110K 数据集:从已存在的数据集清理并重新分发,用于进一步优化Magicoder系列。
演示
Magicoder提供了在线和本地的演示平台:
- 在线Gradio演示可通过Magicoder Playground试用。
- 本地Gradio演示提供了快速部署的脚本,用户可以在本地机器上进行测试。
如何引用
如果在研究中使用Magicoder,可以使用如下BibTeX条目进行引用:
@InProceedings{wei2024magicoder,
title = {Magicoder: Empowering Code Generation with {OSS}-Instruct},
author = {Wei, Yuxiang and Wang, Zhe and Liu, Jiawei and Ding, Yifeng and Zhang, Lingming},
booktitle = {Proceedings of the 41st International Conference on Machine Learning},
pages = {52632--52657},
year = {2024},
volume = {235},
series = {Proceedings of Machine Learning Research},
month = {21--27 Jul},
publisher = {PMLR},
pdf = {https://raw.githubusercontent.com/mlresearch/v235/main/assets/wei24h/wei24h.pdf},
url = {https://proceedings.mlr.press/v235/wei24h.html}
}
注意事项
- Magicoder模型可能会发生错误或生成误导性内容,尤其是在非编码任务中。
- 使用Magicoder时,请遵守OpenAI的使用条款。
Magicoder代表了在代码生成领域的先进尝试,为开发者提供了强大的工具来生成更准确的代码。通过不断的优化和改进,Magicoder在不同的应用中展现了其潜力与卓越的性能。