pipeline_tag: 文本生成
inference: true
widget:
-
text: module display_hello_word
example_title: Hello world
group: Verilog
license: bigcode-openrail-m
datasets:
-
shailja/Verilog_GitHub
library_name: transformers
tags:
-
代码
model-index:
-
name: VeriGen
results:
- task:
type: 文本生成
dataset:
type: openai_humaneval
name: VeriEval (Prompted)
metrics:
- name: pass@1
type: pass@1
value:
verified: false
extra_gated_prompt: >-
模型许可协议
请在接受前阅读BigCode的OpenRAIL-M许可协议。
extra_gated_fields:
我接受上述许可协议,并将遵守使用限制和共享要求使用该模型: checkbox
VeriGen
目录
- 模型概述
- 使用
- 局限性
- 训练
- 许可
- 引用
模型概述
VeriGen模型是基于CodeGen-multi-16B微调的16B参数模型,训练数据来自Verilog代码数据集。
使用
预期用途
该模型在GitHub和教材中的Verilog代码上进行训练。因此,它不是一个指令模型,像"编写一个实现2选1多路选择器的模块"这样的命令效果不佳。然而,通过在提示中添加部分模块头,如"module mux"以及提示文本,可以将其转变为一个有效的Verilog教学助手。
欢迎在社区标签页分享您的生成结果!
生成示例
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
prompt = "//module half adder "
device='cuda'
model_name = "shailja/fine-tuned-codegen-16B-Verilog"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name).to(device)
input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
sample = model.generate(input_ids, max_length=128, temperature=0.5, top_p=0.9)
print(tokenizer.decode(sample[0], truncate_before_pattern=[r"endmodule"]) + "endmodule")
归属及其他要求
该模型的预训练数据集并未仅筛选具有宽松许可的代码。尽管如此,模型可以从数据集中逐字生成源代码。代码的许可可能要求归属和/或其他必须遵守的特定要求。
局限性
该模型已在开源Verilog源代码上进行训练。源代码中的主要自然语言是英语,尽管也存在其他语言。因此,该模型能够在提供一定上下文的情况下生成Verilog片段,但生成的代码不能保证按预期工作。它可能效率低下、包含错误或漏洞。有关模型局限性的深入讨论,请参阅论文。
训练
模型
- 架构: 具有多查询注意力的GPT-2模型
- 预训练步数: 150k
- 预训练标记数: ~72B
- 精度: fp16
硬件
- GPU: 4块Tesla A100
- 训练时间: 15天
许可
该模型根据BigCode OpenRAIL-M v1许可协议授权。您可以在此处找到完整的协议。
引用
@misc{https://doi.org/10.48550/arxiv.2212.11140,
doi = {10.48550/ARXIV.2212.11140},
url = {https://arxiv.org/abs/2212.11140},
author = {Thakur, Shailja and Ahmad, Baleegh and Fan, Zhenxing and Pearce, Hammond and Tan, Benjamin and Karri, Ramesh and Dolan-Gavitt, Brendan and Garg, Siddharth},
title = {Benchmarking Large Language Models for Automated Verilog RTL Code Generation},
publisher = {arXiv},
year = {2022},
copyright = {arXiv.org perpetual, non-exclusive license}
}