模型简介
模型特点
模型能力
使用案例
🚀 GPT-Code-Clippy-1.3B-APPS-all
GPT-Code-Clippy-1.3B-APPS-all 是一个基于GPT-Neo-1.3B在APPS数据集上微调的模型,专门用于解决编程任务,为编程开发提供了强大的支持。
🚀 快速开始
本模型可直接使用文本生成管道进行调用。以下示例每次运行时都会生成不同的序列:
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
prompt = """
A function to greet user. Given a user name it should say hello
def greet(name):
ANSWER:
"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids.to(device)
start = input_ids.size(1)
out = model.generate(input_ids, do_sample=True, max_length=50, num_beams=2,
early_stopping=True, eos_token_id=tokenizer.eos_token_id, )
print(tokenizer.decode(out[0][start:]))
✨ 主要特性
- 专业编程任务解决:基于GPT-Neo-1.3B在APPS数据集上微调,专注于解决编程任务。
- 丰富训练数据支持:使用包含10,000个编码问题、131,836个测试用例和232,444个人工编写的真实解决方案的APPS数据集进行训练。
📦 安装指南
训练此模型的脚本可在此处找到。
使用以下命令结合上述脚本可复现训练过程:
python run_clm_apps.py \
--output_dir ./gpt-neo-125M-apps \
--model_name_or_path EleutherAI/gpt-neo-125B \
--dataset_name ./apps.py \
--dataset_config_name formatted \
--do_train --do_eval \
--block_size="1024" \
--per_device_train_batch_size="3" \
--per_device_eval_batch_size="3" \
--preprocessing_num_workers="16" \
--learning_rate="8e-5" \
--warmup_steps="800" \
--adam_beta1="0.9" \
--adam_beta2="0.98" \
--weight_decay="0.1" \
--overwrite_output_dir \
--num_train_epochs="5" \
--logging_steps="50" \
--eval_steps="2000" \
--report_to="wandb" \
--dtype="bfloat16" \
--save_strategy epoch \
--gradient_accumulation_steps 1 \
--all_data true \
📚 详细文档
模型描述
GPT-Neo-1.3B-APPS-all 是在APPS数据集上微调的GPT-Neo-1.3B模型,专门用于解决编程任务。
训练数据
该模型在自动化编程进度标准(APPS)数据集上进行训练。该数据集总共包含10,000个编码问题,有131,836个用于检查解决方案的测试用例和232,444个人工编写的真实解决方案。问题可能较为复杂,平均每个问题的长度为293.2个单词。数据被均匀地分为训练集和测试集,每个集合包含5,000个问题。
本模型使用了APPS数据集的大部分数据进行微调,包括训练集和测试集,以探索此训练任务对模型在其他代码合成评估指标上性能的影响。仅在训练集上微调的模型可在此处找到。
训练过程
训练此模型使用的脚本可在此处找到。
训练使用AdamW优化器进行5个epoch的训练,并采用线性衰减学习率调度,有800个热身步骤。要复现训练过程,可使用上述脚本结合以下命令:
python run_clm_apps.py \
--output_dir ./gpt-neo-125M-apps \
--model_name_or_path EleutherAI/gpt-neo-125B \
--dataset_name ./apps.py \
--dataset_config_name formatted \
--do_train --do_eval \
--block_size="1024" \
--per_device_train_batch_size="3" \
--per_device_eval_batch_size="3" \
--preprocessing_num_workers="16" \
--learning_rate="8e-5" \
--warmup_steps="800" \
--adam_beta1="0.9" \
--adam_beta2="0.98" \
--weight_decay="0.1" \
--overwrite_output_dir \
--num_train_epochs="5" \
--logging_steps="50" \
--eval_steps="2000" \
--report_to="wandb" \
--dtype="bfloat16" \
--save_strategy epoch \
--gradient_accumulation_steps 1 \
--all_data true \
预期用途和局限性
使用方法
你可以直接使用文本生成管道来使用此模型。以下示例每次运行时都会生成不同的序列:
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-neo-1.3B-apps-all-2")
prompt = """
A function to greet user. Given a user name it should say hello
def greet(name):
ANSWER:
"""
input_ids = tokenizer(prompt, return_tensors='pt').input_ids.to(device)
start = input_ids.size(1)
out = model.generate(input_ids, do_sample=True, max_length=50, num_beams=2,
early_stopping=True, eos_token_id=tokenizer.eos_token_id, )
print(tokenizer.decode(out[0][start:]))
局限性和偏差
- 过度依赖:此模型可能会生成看似合理但不一定正确的解决方案。如果不恰当地评估生成的代码,可能会导致负面后果,如引入错误或安全漏洞。因此,用户必须意识到使用此语言模型的局限性和潜在的负面后果。
- 经济和劳动力市场影响:在大型代码数据集上训练的大型语言模型(如本模型)能够生成高质量的代码,有可能自动化部分软件开发过程,这可能会对软件开发人员产生负面影响。然而,正如论文中所讨论的,根据O*NET OnLine的软件开发人员总结报告所示,开发人员不仅仅是编写软件。
- 偏差:该模型在包含特定格式提示问题的数据上进行训练。如果提示格式与APPS数据集中使用的格式不同,模型的性能可能会变差。
此模型是微调后的GPT-Neo,可能继承了它的偏差和局限性。详情请参阅GPT-Neo模型卡片。
评估结果
即将推出...
🔧 技术细节
- 训练脚本:https://github.com/ncoop57/gpt-code-clippy/blob/camera-ready/training/run_clm_apps.py
- 训练参数:使用AdamW优化器进行5个epoch的训练,采用线性衰减学习率调度,800个热身步骤。
📄 许可证
本项目采用MIT许可证。
信息表格
属性 | 详情 |
---|---|
模型类型 | 基于GPT-Neo-1.3B在APPS数据集上微调的模型 |
训练数据 | 自动化编程进度标准(APPS)数据集,包含10,000个编码问题、131,836个测试用例和232,444个人工编写的真实解决方案 |
常用提示信息
⚠️ 重要提示
此模型可能会生成看似合理但不一定正确的解决方案。如果不恰当地评估生成的代码,可能会导致负面后果,如引入错误或安全漏洞。因此,用户必须意识到使用此语言模型的局限性和潜在的负面后果。
💡 使用建议
在使用此模型生成的代码时,请务必对代码进行充分的测试和评估,以确保其正确性和安全性。同时,要注意提示格式对模型性能的影响,尽量使用与APPS数据集中相似的提示格式。



