一、前言
今天这篇文章将向大家详细介绍如何对 Code Llama 进行微调,让它变成适合 SQL 开发的有利工具。对于编程开发任务,经过适当微调后的 Code Llama 的性能通常都会比普通的 Llama 强很多,特别是当我们针对具体任务进行优化时:
-
使用
b-mc2/sql-create-context这个文本查询及其对应的SQL查询集合进行训练 -
使用
Lora方法,将基础模型的权重量化为int8,冻结权重,仅对适配器进行训练 -
本文大多参考了
alpaca-lora项目,同时也进行了一定的改进与优化
通过上述几点方法,相信我们能使Code Llama专注于SQL开发领域,获得更好的效果。如果按照本指南步骤进行指导,相信您也能掌握微调的奥妙。
二、微调 Code Llama
2.1、安装依赖
我使用了一台配置了 Python 3.10 和 Cuda 11.8 的 A100 GPU 服务器来运行本文中的代码。大约运行了一个小时。(为了验证可移植性,我还试验在Colab上运行代码,效果都很好。)
!pip install git+https://github.com/huggingface/transformers.git@main bitsandbytes accelerate==0.20.3 # we need latest transformers for this
!pip install git+https://github.com/huggingface/peft.git@e536616888d51b453ed354a6f1e243fecb02ea08
!pip install datasets==2.10.1
import locale # colab workaround
locale.getpreferredencoding = lambda: "UTF-8" # colab workaround
!pip install wandb
2.2、加载库
from datetime import datetime
import os
import sys
import torch
from peft import (
LoraConfig,
get_peft_model,
get_peft_model_state_dict,
prepare_model_for_int8_training,
set_peft_model_state_dict,
)
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForSeq2Seq
(如果出现导入错误,请尝试重新启动 Jupyter 内核)
2.3、加载数据集
这将从 Huggingface Hub 中提取数据集,并将其中的 10% 分成评估集,以检查模型在训练中的表现如何:
from datasets import load_dataset
dataset = load_dataset("b-mc2/sql-create-context", split="train")
train_dataset = dataset.train_test_split(test_size=0.1)["train"]
eval_dataset = dataset.train_test_split(test_size=0.1)["test"]
如果您想加载自己的数据集,请执行以下操作:
train_dataset = load_dataset('json', data_files='train_set.jsonl', split='train')
eval_dataset = load_dataset('json', data_files='validation_set.jsonl', split='train')
如果您想查看数据集中的任何样本,只需执行以下

本文详细介绍了如何对CodeLlama进行针对SQL开发的微调,包括安装依赖、加载数据集、使用Lora方法、模型训练和加载最终检查点。通过这些步骤,可以提升CodeLlama在SQL任务上的性能。
最低0.47元/天 解锁文章
1814





