语言:
- 英文
- Python
许可证: mit
标签:
- gpt_neo
- 代码合成
数据集:
- apps
GPT-Code-Clippy-1.3B-APPS-all
模型描述
GPT-Neo-1.3B-APPS-all是基于GPT-Neo-1.3B模型,在APPS数据集上微调而成的。该模型专门用于解决编程任务。
训练数据
模型训练使用了自动化编程进步标准(APPS)数据集。该数据集总计包含10,000个编程问题,131,836个测试用例用于验证解决方案,以及232,444个人工编写的标准答案。问题可能较为复杂,平均每个问题的描述长度为293.2个单词。数据被均匀分为训练集和测试集,各包含5,000个问题。
本模型使用了APPS数据集的大部分内容进行微调,包括训练集和测试集,以探索这种训练任务对其他代码合成评估指标的影响。仅使用训练集微调的模型可在此处找到链接。
训练过程
训练脚本可在此处获取链接。
训练进行了5个周期,使用AdamW优化器和线性衰减学习率调度,包含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 = """
一个向用户问候的函数。给定用户名后应输出问候语
def greet(name):
答案:
"""
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:]))
限制与偏差
该模型仅供研究使用,不保证生成代码的质量。
OpenAI的论文"Evaluating Large Language Models Trained on Code"详细讨论了大型代码语言模型的潜在影响。因此,部分相关讨论在此强调,特别是关于法律影响的不同观点:
-
过度依赖风险:模型可能生成看似合理但不一定正确的解决方案。未正确评估生成代码可能导致引入错误或安全漏洞等负面后果。
-
经济与劳动力市场影响:能够生成高质量代码的大型语言模型可能自动化部分软件开发流程,这可能对软件开发人员产生负面影响。但如论文所述,软件开发不仅涉及编写代码(参考O*NET OnLine的开发者总结报告)。
-
偏差问题:模型训练数据中的问题提示具有特定格式。若提示格式与APPS数据集不同,模型表现可能下降。
该模型基于GPT-Neo微调,可能继承了其固有偏差和限制。详见GPT-Neo模型卡。
评估结果
即将发布...