🚀 VeriGen
VeriGen是一个用于自动生成Verilog RTL代码的模型,基于CodeGen-multi-2B微调而来,在Verilog数据集上训练,能在一定上下文下生成Verilog代码片段。
🚀 快速开始
生成示例
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
prompt = "//module half adder "
device='cuda'
model_name = "shailja/CodeGen_2B_Verilog"
tokenizer = AutoTokenizer.from_pretrained("shailja/fine-tuned-codegen-2B-Verilog")
model = AutoModelForCausalLM.from_pretrained("shailja/fine-tuned-codegen-2B-Verilog").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")
✨ 主要特性
- 针对性训练:基于CodeGen-multi-2B在Verilog数据集上微调,适用于Verilog代码生成。
- 一定上下文生成能力:在提供部分模块头信息等上下文时,可生成Verilog代码片段。
📚 详细文档
模型概述
VeriGen模型是一个具有20亿参数的模型,是CodeGen-multi-2B的微调版本。它在Verilog数据集上进行训练,上下文长度为2048。
使用说明
预期用途
该模型在来自GitHub和教科书的Verilog代码上进行训练。因此,它不是一个指令模型,像“编写一个实现2对1多路复用器的模块”这样的命令效果不佳。然而,在提示文本中添加部分模块头信息(如“module mux”),它就能成为一个有效的Verilog教学助手。
欢迎在社区标签中分享你的生成结果!
归属与其他要求
该模型的预训练数据集并非仅筛选了允许使用的许可证。不过,该模型可以从数据集中逐字生成源代码。代码的许可证可能要求进行归属声明和/或遵守其他特定要求,必须予以尊重。
局限性
该模型在来自开源的Verilog源代码上进行训练。源代码中主要使用的自然语言是英语,尽管也存在其他语言。因此,该模型能够在提供一些上下文的情况下生成Verilog代码片段,但生成的代码不能保证按预期工作。它可能效率低下、包含错误或漏洞。有关模型局限性的深入讨论,请参阅论文。
训练信息
模型信息
- 架构:具有多查询注意力的GPT - 2模型
- 预训练步骤:150k
- 预训练令牌:约720亿
- 精度:fp16
硬件信息
📄 许可证
该模型遵循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}
}
⚠️ 重要提示
请在接受之前阅读BigCode OpenRAIL - M许可协议。
属性 |
详情 |
模型类型 |
文本生成 |
数据集 |
shailja/Verilog_GitHub |
库名称 |
transformers |
标签 |
代码 |
模型名称 |
VeriGen |
任务类型 |
文本生成 |
评估数据集 |
VeriEval (Prompted) |
评估指标 |
pass@1 |
许可证 |
bigcode-openrail-m |