模型:

flax-community/gpt-neo-125M-apps

英文

GPT-Neo-125M-APPS

请参考我们的新 GitHub Wiki ,其中详细记录了我们创建开源版本GitHub Copilot的努力。

模型描述

GPT-Neo-125M-APPS是在APPS数据集上进行的GPT-Neo-125M微调的模型。该模型专门用于解决编程任务。

训练数据

该模型在 Automated Programming Progress Standard (APPS) dataset 上进行训练。数据集总共包含10,000个编程问题,其中有131,836个用于检查解决方案的测试用例以及由人类编写的232,444个基准解决方案。问题可能很复杂,因为平均问题长度为293.2个词。数据被均等地分为训练集和测试集,每个集合有5,000个问题。

训练过程

用于训练该模型的训练脚本可以在 here 中找到。

使用AdamW优化器、衰减学习率计划和800个热身步骤进行5个时期的训练。要复现训练,可以使用上述脚本中的以下命令:

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 = """
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:]))

限制和偏见

该模型目的是用于研究目的,不对生成的代码的质量提供任何保证。

OpenAI的论文 "Evaluating Large Language Models Trained on Code" 很好地讨论了基于代码训练的大型语言模型可能产生的影响。因此,这里特别强调了论文中与此数据集和可能从中训练的模型相关的部分,以及在法律方面的一些不同观点。

  • 过度依赖:该模型可能生成似乎正确但并非真正解决方案的合理解决方案。未能正确评估生成的代码可能会导致负面后果,如引入错误或安全漏洞。因此,用户需要注意使用这种语言模型的限制和潜在的负面后果。

  • 经济和劳动市场影响:基于此类大型代码数据集进行训练的大型语言模型能够生成高质量的代码,可能会自动化软件开发过程的一部分。这可能对软件开发人员产生负面影响。然而,正如论文中所讨论的,正如来自 O*NET OnLine 的软件开发人员的摘要报告所显示的,开发人员不仅仅是编写软件。

  • 偏见:该模型是根据具有特定格式的提示问题的数据进行训练的。如果提示格式与APPS数据集中使用的格式不同,模型的性能可能会较差。

  • GPT-CC是GPT-Neo的微调版本,可能从中继承了一些偏见和限制。有关详细信息,请参阅 GPT-Neo model card

    评估结果

    即将推出...