language:
- 英文
- Python
license: mit
tags:
- gpt_neo
- 代码合成
datasets:
- apps
GPT-Neo-1.3B-APPS-all
请参阅我们全新的GitHub Wiki,其中详细记录了我们创建开源版GitHub Copilot的完整历程
模型描述
GPT-Neo-1.3B-APPS-all是基于GPT-Neo-1.3B模型在APPS数据集上微调的版本。该模型专为解决编程任务而优化。
训练数据
模型训练使用了自动化编程进步标准(APPS)数据集。该数据集共包含10,000个编程题目,含131,836个测试用例用于验证解决方案,以及232,444个人工编写的标准答案。题目复杂度较高,平均每个问题的描述长度为293.2个单词。数据均分为训练集和测试集,各含5,000道题目。
本模型使用了APPS数据集的绝大部分进行微调(包含训练集和测试集),以探索这种训练方式对模型在其他代码合成评估指标上的影响。仅使用训练集微调的模型可访问此处。
训练过程
训练脚本详见此链接。
训练共进行5个epoch,使用AdamW优化器,采用线性衰减学习率调度并设置800步预热。可通过以下命令复现训练过程:
python run_clm_apps.py \
--output_dir ./gpt-neo-1.3B-apps \
--model_name_or_path EleutherAI/gpt-neo-1.3B \
--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-code-clippy-1.3B-apps-alldata")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-code-clippy-1.3B-apps-alldata")
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-CC继承自GPT-Neo模型,可能包含原始模型的偏差和限制。详见GPT-Neo模型卡片。
评估结果
即将发布...