大模型微调(Fine-tuning)实战:快速使用 colab下的unsloth 零成本打造定制化模型

前言

最近b站上刷到一个博主,微调(Fine-tuning)大模型DeepSeek,实现本地运行,打造一款定制化的LLM,下面是一些关键步骤和代码。

UP主的案例是微调deepseek,打造一个算命大师模型

一、准备工作

  • Colab 是一个基于云端的编程环境
  • unsloth是一个开源工具,专门用来加速大语言模型(LLMs)的微调过程
  • HuggingFace: 汇聚了众多最前沿的模型和数据集等

首先打开 Colab ,这里是我们的IDE。
在这里插入图片描述

将运行时类型改为 T4 GPU(NVIDIA 推出的一款高性能 GPU,特别适合深度学习任务)

在这里插入图片描述

二、使用colab平台微调模型

主要步骤
在这里插入图片描述

Colab是一个云端编译环境,它提供的是 一个 Jupyter Notebook的IDE

1.安装依赖

# 安装unsloth包(大型语言模型微调工具)
!pip install unsloth  

# 卸载旧版本并安装最新版unsloth(GitHub源码)
!pip uninstall unsloth -y && pip install --upgrade --no-cache-dir --no-deps git+https://github.com/unslothai/unsloth.git

# 安装量化工具包
!pip install bitsandbytes unsloth_zoo

输出如下:
在这里插入图片描述

2.加载预训练模型

  • model_name,然后我们选择的是 DeepSeek-R1-Distill-Llama-8B(基于 Llama 的 DeepSeek-R1 蒸馏版本,80 亿参数)
from unsloth import FastLanguageModel
import torch

max_seq_length = 2048        # 模型处理文本的最大长度(上下文窗口)
dtype = None                 # 自动选择计算精度(通常为float16或bfloat16)
load_in_4bit = True          # 启用4位量化压缩,减少显存占用

# 加载预训练模型
model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/DeepSeek-R1-Distill-Llama-8B",  # 模型名称
    max_seq_length=max_seq_length,
    dtype=dtype,
    load_in_4bit=load_in_4bit,
    # token="hf_...",       # HuggingFace 访问令牌(私有模型需填写)
)

4bit 量化(4bit Quantization):一种技术,通过减少模型的精度来节省内存,就像把一个大箱子压缩成一个小箱子,方便携带。

3.微调前测试

# 定义提示词模板(Prompt Engineering)
prompt_style = """以下是描述任务的指令,以及提供进一步上下文的输入。
请写出一个适当完成请求的回答。
在回答之前,请仔细思考问题,并创建一个逻辑连贯的思考过程,以确保回答准确无误。

### 指令:
你是一位精通卜卦、星象和运势预测的算命大师。请回答以下算命问题。

### 问题:
{}

### 回答:
<think>{}"""  
# {} 为占位符,后续填充具体问题

# 定义测试问题
question = "1992年闰四月初九巳时生人,女,想了解健康运势"

关键设计解析

组件 作用 最佳实践
指令模板 明确模型角色(算命大师)和任务目标(运势预测) 角色扮演式提示词提升任务对齐度
思考过程引导 要求模型先构建逻辑推理链再生成答案 减少幻觉,提高答案可信度
占位符 {} 动态插入用户具体问题,实现模板复用 提升代码可维护性

下面我们测试下微调前的模型的输出

# 准备模型进入推理模式(禁用训练层优化以提升速度)
FastLanguageModel.for_inference(model)

# 构造输入并编码
inputs = tokenizer(
    [prompt_style.format(question, "")],  # 可能有OCR错误,第二个参数应为占位符填充
    return_tensors="pt", 
).to("cuda")  # 数据移至GPU

# 生成回答
outputs = model.generate(
    input_ids=inputs.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值