各类微调数据创建
unsloth
Unsloth可以进行模型对话调用和模型微调的框架。现在我要用unsloth这个库在服务器上用jupyter进行微调模型。
先进行导入和调用流程
import os
# 1. 必须在 import unsloth 之前设置环境变量,彻底禁用离线时的网络检查
os.environ["HF_HUB_OFFLINE"] = "1"#os为环境变量的接口,HF_HUB_OFFLINE是Hugging Face的官方库,这里设置为1代表#True开启离线模式
from unsloth import FastLanguageModel
import torch# 2. 严谨的导入顺序:unsloth 建议放在最前面
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "/root/workspace/weitiao/zy/models/Qwen2-7B-Instruct-bnb-4bit",#模型导#入
max_seq_length = 2048,
load_in_4bit = True, #我们加载的是4bit动态量化模型
# 3. 核心参数:强制只从本地加载,跳过远程连接
local_files_only = True,
)print("模型加载成功!")
导入完成后在下面单元格中输入model可以看到模型的基本信息,此时没有LoRA

tokenizer查看分词器基本信息

查看模型的基本信息:

# 1. 硬件总量
gpu_stats = torch.cuda.get_device_properties(0)
max_memory = gpu_stats.total_memory / 1024**3# 2. 预留占用 (模型加载后占掉的)
reserved_memory = torch.cuda.memory_reserved() / 1024**3# 3. 剩余可用
free_memory = max_memory - reserved_memoryprint(f"GPU: {gpu_stats.name}")
print(f"总显存: {max_memory:.2f} GB")
print(f"已占用: {reserved_memory:.2f} GB")
print(f"剩余可用: {free_memory:.2f} GB")

*****开始对话*****
普通对话
尝试对话,借助Unsloth进行模型创建有两个步骤,一个是借助apply_chat_template进行分词同时输入对话相关参数,第二个借助generate进行文本创建。
以下是一次对话的基本流程:

这是assistant之前的内容,给AI的输入

这里是把刚才那一段人可以看懂的内容,翻译成计算机可以看懂的数字信号(Token IDs)
.to("cuda")这一行把数据从内存搬到了RTX 4090的显存中。
model.generate(...):最核心的动作,
input_ids和attention_mask:告诉模型,问的问题,模型会注意这些关键字
max_new_tokens=max_seq_length:设定一个终点站,告诉模型最多可以写多少个字(Token),防止它没完没了地写下去。
use_cache=True:这是Unsloth的大模型加速开关,会让大模型记住已经写出来的字,这样写下一个字的时候,速度会加快。

当然直接输出的是一段数字,我们需要解码一下。
这是一个没有思考模式的AI回答的,没有思考链。对于unsloth来说,只需要把前面的思考模式打开就可以了。
当然Qwen2.5的7B模型没有思考链。
下面是带有系统提示词的对话:
前面无变化,在后面对模型调用时加上系统提示词就可以了。


function calling message
创建一些function calling的message,用这个可以调用外部函数。
创建一个外部函数例如查询天气的函数:
# 新增计算器工具
def calculator(expression: str) -> str:
"""计算数学表达式的结果"""
try:
return str(eval(expression))
except Exception as e:
return f"计算错误: {str(e)}"
# 更新 tools 列表
tools = [
# 原天气工具
{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询即时天气函数,根据输入的城市名称,查询对应城市的实时天气,一次只能查询一个城市",
"parameters": {
"type": "object",
"properties": {
"loc": {
"type": "string",
"description": "城市名称,注意,中国的城市需要用对应城市的英文名称代替,例如北京是Beijing,上海是Shanghai"
}
},
"required": ["loc"]
}
}
},
# 新增计算器工具
{
"type": "function",
"function": {
"name": "calculator",
"description": "计算数学表达式的结果,支持加减乘除、幂运算等",
"parameters": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "要计算的数学表达式,例如 2+3*5、(10-2)/4"
}
},
"required": ["expression"]
}
}
}
]
垂直领域大模型数据集
HuggingFace数据集主页:https://huggingface.co/?activityType=all&feedType=following&trending=dataset
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)