语言:
- 英文
- 代码
语言详情: Python代码
许可证: MIT
标签:
- gpt_neo
- 代码合成
数据集:
- apps
GPT-Neo-125M-APPS
请参阅我们新的GitHub Wiki,其中详细记录了我们创建GitHub Copilot开源版本的努力
模型描述
GPT-Neo-125M-APPS是基于GPT-Neo-125M在APPS数据集上微调的模型。该模型专门用于解决编程任务。
训练数据
该模型在自动化编程进展标准(APPS)数据集上进行训练。数据集总共包含10,000个编程问题,其中131,836个测试用例用于检查解决方案,232,444个人工编写的真实解决方案。问题可能较为复杂,平均每个问题的长度为293.2个单词。数据均匀分为训练集和测试集,各包含5,000个问题。
训练过程
用于训练该模型的训练脚本可以在这里找到。
训练进行了5个周期,使用AdamW优化器和带有800个预热步骤的线性衰减学习率计划。要复现训练过程,可以使用以下命令与上述脚本:
python run_clm_apps.py \
--output_dir $HOME/gpt-neo-125M-apps \
--model_name_or_path EleutherAI/gpt-neo-125M \
--dataset_name $HOME/gpt-code-clippy/data_processing/apps.py \
--dataset_config_name formatted \
--do_train --do_eval \
--block_size="1024" \
--per_device_train_batch_size="16" \
--per_device_eval_batch_size="16" \
--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 2 \
预期用途与限制
该模型经过微调,用于解决给定文本描述和可选起始代码的编程问题。
如何使用
您可以直接使用文本生成的管道来使用该模型。以下示例每次运行时生成不同的序列:
from transformers import AutoModelForCausalLM, AutoTokenizer, FlaxAutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("flax-community/gpt-neo-125M-apps")
tokenizer = AutoTokenizer.from_pretrained("flax-community/gpt-neo-125M-apps")
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的偏见和限制。详情请参阅GPT-Neo模型卡。
评估结果
即将推出...