模型:
codeparrot/codeparrot
CodeParrot 🦜是一个GPT-2模型(15亿个参数),用于生成Python代码。在最初的训练和v1.0发布之后,我们对模型进行了进一步的训练并发布了v1.1(有关详情请参见下文)。
您可以直接在transformers中加载CodeParrot模型和标记器:
from transformers import AutoTokenizer, AutoModelWithLMHead
tokenizer = AutoTokenizer.from_pretrained("codeparrot/codeparrot")
model = AutoModelWithLMHead.from_pretrained("codeparrot/codeparrot")
inputs = tokenizer("def hello_world():", return_tensors="pt")
outputs = model(**inputs)
或者使用一个pipeline:
from transformers import pipeline
pipe = pipeline("text-generation", model="codeparrot/codeparrot")
outputs = pipe("def hello_world():")
该模型经过两个步骤在清理过的 CodeParrot 🦜 dataset 上进行了训练。在初始训练(v1.0)之后,模型经过了另外30k步的训练,得到了v1.1,并且您可以在以下表格中找到设置:
| Config | v1.0 | v1.1 |
|---|---|---|
| Batch size | 512 | 512 |
| Context size | 1024 | 1024 |
| Training steps | 50'000 | 30'000 |
| Gradient accumulation | 16 | 16 |
| Gradient checkpointing | True | True |
| Learning rate | 2e-4 | 5e-5 |
| Weight decay | 0.1 | 0.1 |
| Warmup steps | 750 | 750 |
| Schedule | Cosine | Cosine |
训练是在16 x A100(40GB)GPU上执行的。这个设置大约使用了260亿+150亿个标记。
我们在OpenAI的 HumanEval 基准上评估了模型,该基准包含编程挑战:
| Metric | v1.0 | v1.1 |
|---|---|---|
| pass@1 | 3.58% | 3.99% |
| pass@10 | 8.03% | 8.69% |
| pass@100 | 14.96% | 17.88% |
pass@k metric 表示至少有k个生成的代码通过测试的概率。