许可证: llama2
数据集:
- AlfredPros/smart-contracts-instructions
语言:
- en
标签:
- 代码
- 区块链
- solidity
- 智能合约
Code LLaMA 7B 指令微调版(Solidity专精)
这是一个基于70亿参数Code LLaMA-Instruct模型进行微调的版本,采用PEFT库提供的4位QLoRA微调技术,专门用于生成Solidity智能合约代码。
训练数据集
微调使用的数据集是AlfredPros的智能合约指令集(https://huggingface.co/datasets/AlfredPros/smart-contracts-instructions),包含6,003组由GPT生成的人类指令与Solidity源代码配对数据,该数据集已针对大语言模型训练进行过优化处理。
训练参数
比特与字节量化配置
- 4位量化加载: 启用
- 4位量化类型: NF4
- 4位计算数据类型: float16
- 4位双重量化: 启用
监督式微调训练参数
- 训练轮次: 1
- FP16精度: 启用
- FP16优化级别: O1
- BF16精度: 禁用
- 单设备训练批次大小: 1
- 梯度累积步数: 1
- 梯度检查点: 启用
- 最大梯度范数: 0.3
- 学习率: 2e-4
- 权重衰减: 0.001
- 优化器: 分页AdamW 32位
- 学习率调度器类型: 余弦退火
- 预热比例: 0.03
训练详情
- 使用GPU: 1×NVIDIA GeForce GTX 1080Ti
- 训练时长: 21小时4分57秒
训练损失记录
步骤 训练损失
100 0.330900
...(中间数据省略)...
6003 0.271939
使用示例
from transformers import BitsAndBytesConfig, AutoTokenizer, AutoModelForCausalLM
import torch
import accelerate
use_4bit = True
bnb_4bit_compute_dtype = "float16"
bnb_4bit_quant_type = "nf4"
use_double_nested_quant = True
compute_dtype = getattr(torch, bnb_4bit_compute_dtype)
bnb_config = BitsAndBytesConfig(
load_in_4bit=use_4bit,
bnb_4bit_use_double_quant=use_double_nested_quant,
bnb_4bit_quant_type=bnb_4bit_quant_type,
bnb_4bit_compute_dtype=compute_dtype,
load_in_8bit_fp32_cpu_offload=True
)
tokenizer = AutoTokenizer.from_pretrained("AlfredPros/CodeLlama-7b-Instruct-Solidity")
model = AutoModelForCausalLM.from_pretrained("AlfredPros/CodeLlama-7b-Instruct-Solidity", quantization_config=bnb_config, device_map="balanced_low_0")
input='创建一个白名单智能合约,用于管理经DAO批准的钱包地址。该合约应允许当前所有者添加/移除授权钱包,并设置校验地址进行额外验证。当前所有者可转移所有权。'
prompt = f"""### 指令:
根据以下任务要求和输入内容,编写能解决问题的程序代码:
### 任务:
{input}
### 解决方案:
"""
input_ids = tokenizer(prompt, return_tensors="pt", truncation=True).input_ids.cuda()
outputs = model.generate(input_ids=input_ids, max_new_tokens=1024, do_sample=True, top_p=0.9, temperature=0.001, pad_token_id=1)
print(tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0][len(prompt):])