跳至主要内容

微调 Llama 3.2 并在本地使用:分步指南

了解如何在 Kaggle 访问 Llama 3.2 轻量与视觉模型,使用免费 GPU 在自定义数据集上微调模型,将模型合并并导出到 Hugging Face Hub,并将微调后的模型转换为 GGUF 格式,以便通过 Jan 应用在本地使用。
· 14分钟 阅读

使用 AI 探索

近期,大语言模型(LLM)领域变化迅速。新一代 LLM 正在被设计得更小更智能,与超大模型相比,成本更低、使用更便捷。 

随着 Llama 3.2 的发布,我们如今可以使用更小的模型,例如 1B 和 3B 变体。虽然这些小模型在通用任务上的准确性可能不及大模型,但通过微调,它们能在特定领域表现出色,比如客户支持交互中的情绪分类。这种能力使它们有望在这些场景中替代传统模型。

在本教程中,我们将探索 Llama 3.2 的视觉与轻量模型能力。我们将学习如何访问 Llama 3.2 3B 模型,在客户支持数据集上对其进行微调,随后将其合并并导出到 Hugging Face Hub。最后,我们会将模型转换为 GGUF 格式,并通过 Jan 应用在本地使用。

如果您是 AI 新手,强烈建议您先学习 AI 基础技能路径,了解 ChatGPT、大语言模型、生成式 AI 等基础知识。

图片来源:作者

Llama 3.2 简介

开源的 Llama 3.2 模型家族包含轻量与视觉两类模型。视觉模型擅长图像推理与视觉-语言融合;轻量模型则在多语种文本生成与边缘设备工具调用方面表现突出。

轻量模型

轻量模型有两个更小的变体:1B 与 3B。它们擅长多语种文本生成与工具调用任务。由于体量小,能在设备端运行,确保数据不离开设备,并以低算力成本实现高速文本生成。

为打造这些高效的轻量模型,Llama 3.2 使用了剪枝与知识蒸馏技术。剪枝在保留性能的同时缩小模型尺寸;知识蒸馏则利用更大的网络将知识传递给小模型,从而提升小模型性能。

3B 模型在指令跟随、摘要、提示改写与工具使用等任务上优于Gemma 2(2.6B)与 Phi 3.5-mini 等模型。

llama 3.2 lightweight model benchmark

来源:Llama 3.2: 用开放、可定制模型重塑边缘 AI 与视觉

视觉模型

视觉模型包含 11B 与 90B 两个变体,旨在支持图像推理。11B 与 90B 能理解和解读文档、图表与曲线图,并执行图像描述与视觉定位等任务。这些高级视觉能力得益于将预训练图像编码器与语言模型通过包含交叉注意力层的适配权重进行集成。

与Claude 3 Haiku 和 GPT-4o mini相比,Llama 3.2 视觉模型在图像识别与多种视觉理解任务上表现突出,是多模态 AI 应用的强大工具。

llama 3.2 vision model benchmark

来源:Llama 3.2: 用开放、可定制模型重塑边缘 AI 与视觉

关于 Llama 3.2 的用例、基准、Llama Guard 3 与模型架构,您可以阅读我们的最新博文Llama 3.2 指南:工作原理、用例与更多。

在 Kaggle 访问 Llama 3.2 轻量模型

尽管 Llama 3.2 是免费开源的,您仍需在官网接受条款并提交表单。 

要在 Kaggle 平台获取最新的 Llama 3.2 模型:

  1. 前往 llama.com 网站,填写您的信息,选择轻量与视觉模型。

从 Meta 官网申请 Llama 模型访问权限。

来源:下载 Llama

  1. 前往 Meta | Llama 3.2 模型页面,点击“Submit Form”。

在 Kaggle 申请 Llama 3.2 模型访问权限。

来源:Meta | Llama 3.2 | Kaggle

  1. 接受所有条款与条件,并点击“Submit”。

在 Kaggle 申请 Llama 3.2 模型访问权限。接受条款。

来源:Meta | Llama 3.2 | Kaggle

  1. 等待几分钟,直到看到下载或创建新 Notebook 的选项。选择 Transformers 选项卡与模型变体,然后点击“+ New Notebook”。

选择 Llama 3.2 3B instruct 模型并启动 notebook。

  1. Kaggle Notebook 将随最新 Llama 模型启动。为确保运行,将加速器改为“GPU T4 x2”。

将工作环境设置为使用 GPU 作为加速器。

  1. 更新 Transformers 与 Accelerate Python 包。
%%capture
%pip install -U transformers accelerate
  1. 使用 Transformers 包加载分词器与模型。我们不提供 Hugging Face 模型仓库链接,而是指定模型所在的本地目录。
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline, TextStreamer
import torch


base_model = "/kaggle/input/llama-3.2/transformers/3b-instruct/1"

tokenizer = AutoTokenizer.from_pretrained(base_model)

model = AutoModelForCausalLM.from_pretrained(
    base_model,
    return_dict=True,
    low_cpu_mem_usage=True,
    torch_dtype=torch.float16,
    device_map="auto",
    trust_remote_code=True,
)
  1. 设置 pad_token_id 以避免警告信息。
if tokenizer.pad_token_id is None:
    tokenizer.pad_token_id = tokenizer.eos_token_id
if model.config.pad_token_id is None:
    model.config.pad_token_id = model.config.eos_token_id
  1. 使用模型与分词器创建文本生成管道。
pipe = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    torch_dtype=torch.float16,
    device_map="auto",
)
  1. 使用自定义提示运行管道。本例中我们询问 Vincent van Gogh。
messages = [{"role": "user", "content": "Who is Vincent van Gogh?"}]

prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)

outputs = pipe(prompt, max_new_tokens=120, do_sample=True)

print(outputs[0]["generated_text"])

答案相当准确。 

Llama 3.2 3B 文本生成响应。

  1. 我们提供系统指令,看看它是否能理解并遵循复杂提示。我们将把 Markdown 代码合并为 HTML 显示结果。
from IPython.display import Markdown, display

messages = [
    {
        "role": "system",
        "content": "You are a skilled Python developer specializing in database management and optimization.",
    },
    {
        "role": "user",
        "content": "I'm experiencing a sorting issue in my database. Could you please provide Python code to help resolve this problem?",
    },
]

prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)

outputs = pipe(prompt, max_new_tokens=512, do_sample=True)

display(
    Markdown(
            outputs[0]["generated_text"].split(
                "<|start_header_id|>assistant<|end_header_id|>"
            )[1]
        )
    )

结果非常准确。尽管只有 30 亿参数,该模型表现相当不错。

Llama 3.2 3B 以 markdown 显示的文本生成响应。

如果您在访问 Llama 3.2 轻量模型时遇到困难,请参考 Notebook:访问 Llama 3.2 轻量模型。

在 Kaggle 访问 Llama 3.2 视觉模型

访问视觉模型很简单,而且无需担心 GPU 显存,因为本指南将使用多块 GPU。 

  1. 在 Meta | Llama 3.2 Vision 模型页面提交表单。接受所有条款并点击“Submit”。

Kaggle 上的 Llama 3.2 Vision 模型页面。

来源:Meta | Llama 3.2 Vision | Kaggle

  1. 下拉,选择 Transformers 选项卡与视觉模型变体,然后点击“+ New Notebook”。

选择 Llama 3.2 Vision 的 instruct 版本

来源:Meta | Llama 3.2 Vision | Kaggle

  1. 确保使用“GPU T4 x2”作为加速器。
  2. 更新 Transformers 与 Accelerate Python 包。
%%capture
%pip install -U transformers accelerate
  1. 加载图像处理器与 Llama 3.2 视觉模型。
import torch
from transformers import MllamaForConditionalGeneration, AutoProcessor

base_model = "/kaggle/input/llama-3.2-vision/transformers/11b-vision-instruct/1"

processor = AutoProcessor.from_pretrained(base_model)

model = MllamaForConditionalGeneration.from_pretrained(
    base_model,
    low_cpu_mem_usage=True,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

如图所示,它几乎占用 25 GB 显存。在笔记本电脑或 Google Colab 免费版上无法运行。

GPU 显存状态。

  1. 加载图像。我们使用了本教程的特色图片:OpenAI o1-preview 教程:构建机器学习项目。
  2. 撰写消息并使用聊天模板将其转换为提示。撰写消息并使用聊天模板将其转换为提示。
  3. 同时处理图像与文本,并提供给模型以生成响应。
import requests
from PIL import Image

url = "https://media.datacamp.com/cms/google/ad_4nxcz-j3ir2begccslzay07rqfj5ttakp2emttn0x6nkygls5ywl0unospj2s0-mrwpdtmqjl1fagh6pvkkjekqey_kwzl6qnodf143yt66znq0epflvx6clfoqw41oeoymhpz6qrlb5ajer4aeniogbmtwtd.png"
image = Image.open(requests.get(url, stream=True).raw)

messages = [
    {"role": "user", "content": [
        {"type": "image"},
        {"type": "text", "text": "Describe the tutorial feature image."}
    ]}
]
input_text = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(image, input_text, return_tensors="pt").to(model.device)

output = model.generate(**inputs, max_new_tokens=120)
print(processor.decode(output[0]))

最终我们得到对图像的详细描述,准确度相当高。 

使用 Llama 3.2 视觉模型生成的响应。

如果在运行上述代码时遇到问题,请参考访问 Llama 3.2 视觉模型 Kaggle Notebook。

微调 Llama 3.2 3B Instruct

本节我们将学习如何使用 Transformers 库在客户支持数据集上微调 Llama 3.2 3B Instruct 模型。我们将使用 Kaggle 获取免费 GPU,并获得比 Colab 更高的内存。 

1. 环境设置

在 Kaggle 启动新 Notebook 并设置环境变量。我们将使用 Hugging Face API 保存模型,并用 Weights & Biases 跟踪其性能。

在 Kaggle Notebook 中设置 Hugging Face 与 W&B 环境变量。

安装并更新所有必要的 Python 包。

%%capture
%pip install -U transformers 
%pip install -U datasets 
%pip install -U accelerate 
%pip install -U peft 
%pip install -U trl 
%pip install -U bitsandbytes 
%pip install -U wandb

加载在微调与评估过程中将使用的 Python 包与函数。

from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    HfArgumentParser,
    TrainingArguments,
    pipeline,
    logging,
)
from peft import (
    LoraConfig,
    PeftModel,
    prepare_model_for_kbit_training,
    get_peft_model,
)
import os, torch, wandb
from datasets import load_dataset
from trl import SFTTrainer, setup_chat_format

使用 API Key 登录 Hugging Face CLI。

from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()

hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)

使用 API Key 登录 Weights & Biases,并创建新项目。

wb_token = user_secrets.get_secret("wandb")

wandb.login(key=wb_token)
run = wandb.init(
    project='Fine-tune Llama 3.2 on Customer Support Dataset', 
    job_type="training", 
    anonymous="allow"
)

设置基础模型、数据集与新模型名称等变量。我们将在多个位置使用它们,因此提前设置可避免混淆。

base_model = "/kaggle/input/llama-3.2/transformers/3b-instruct/1"
new_model = "llama-3.2-3b-it-Ecommerce-ChatBot"
dataset_name = "bitext/Bitext-customer-support-llm-chatbot-training-dataset"

2. 加载模型与分词器

设置数据类型与注意力实现。

# Set torch dtype and attention implementation
if torch.cuda.get_device_capability()[0] >= 8:
    !pip install -qqq flash-attn
    torch_dtype = torch.bfloat16
    attn_implementation = "flash_attention_2"
else:
    torch_dtype = torch.float16
    attn_implementation = "eager"

通过提供本地模型目录加载模型与分词器。虽说模型较小,但完整加载并微调仍需时间。因此我们将以 4 位量化加载模型。

# QLoRA config
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch_dtype,
    bnb_4bit_use_double_quant=True,
)
# Load model
model = AutoModelForCausalLM.from_pretrained(
    base_model,
    quantization_config=bnb_config,
    device_map="auto",
    attn_implementation=attn_implementation
)

# Load tokenizer
tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)

3. 加载与处理数据集

我们将从 Hugging Face Hub 加载Bitext-customer-support-llm-chatbot 数据集。它是一个混合合成数据集,我们将用它来创建自定义客户支持聊天机器人。

我们会加载、打乱,并仅选择 1000 个样本。我们在小子集上微调以缩短训练时间,您也可选择使用完整数据。

接着,我们将使用系统指令、用户问题与助手回复创建 "text" 列,并将 JSON 响应转换为聊天格式。

#Importing the dataset
dataset = load_dataset(dataset_name, split="train")
dataset = dataset.shuffle(seed=65).select(range(1000)) # Only use 1000 samples for quick demo
instruction = """You are a top-rated customer service agent named John. 
    Be polite to customers and answer all their questions.
    """
def format_chat_template(row):
    
    row_json = [{"role": "system", "content": instruction },
               {"role": "user", "content": row["instruction"]},
               {"role": "assistant", "content": row["response"]}]
    
    row["text"] = tokenizer.apply_chat_template(row_json, tokenize=False)
    return row

dataset = dataset.map(
    format_chat_template,
    num_proc= 4,
)

如我们所见,已将客户提问与助手回复合并为聊天格式。

dataset['text'][3]

Llama 3.2 3B 文本生成响应。

4. 模型设置

从模型中提取线性模块名称。

import bitsandbytes as bnb

def find_all_linear_names(model):
    cls = bnb.nn.Linear4bit
    lora_module_names = set()
    for name, module in model.named_modules():
        if isinstance(module, cls):
            names = name.split('.')
            lora_module_names.add(names[0] if len(names) == 1 else names[-1])
    if 'lm_head' in lora_module_names:  # needed for 16 bit
        lora_module_names.remove('lm_head')
    return list(lora_module_names)

modules = find_all_linear_names(model)

使用线性模块名称创建 LoRA 适配器。我们只微调 LoRA 适配器,其余模型保持冻结,以节省内存并加快训练。

# LoRA config
peft_config = LoraConfig(
    r=16,
    lora_alpha=32,
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
    target_modules=modules
)
model, tokenizer = setup_chat_format(model, tokenizer)
model = get_peft_model(model, peft_config)

我们正在配置适用于 Kaggle 环境的模型超参数。您可以参考微调 Llama 2 教程了解各超参数,并根据您的系统优化训练。

#Hyperparamter
training_arguments = TrainingArguments(
    output_dir=new_model,
    per_device_train_batch_size=1,
    per_device_eval_batch_size=1,
    gradient_accumulation_steps=2,
    optim="paged_adamw_32bit",
    num_train_epochs=1,
    eval_strategy="steps",
    eval_steps=0.2,
    logging_steps=1,
    warmup_steps=10,
    logging_strategy="steps",
    learning_rate=2e-4,
    fp16=False,
    bf16=False,
    group_by_length=True,
    report_to="wandb"
)

现在我们将设置监督式微调(SFT)训练器,并提供训练与评估数据集、LoRA 配置、训练参数、分词器与模型。

# Setting sft parameters
trainer = SFTTrainer(
    model=model,
    train_dataset=dataset["train"],
    eval_dataset=dataset["test"],
    peft_config=peft_config,
    max_seq_length= 512,
    dataset_text_field="text",
    tokenizer=tokenizer,
    args=training_arguments,
    packing= False,
)

5. 模型训练

开始训练过程,并监控训练与验证损失指标。

trainer.train()

训练损失逐步下降,这是个好迹象。 

模型训练评估

在结束 Weights & Biases 运行后会生成详细的运行历史。

wandb.finish()

W&B 运行历史。

您也可以随时访问 Weights & Biases 仪表盘,以更全面地查看模型指标。

仪表盘中的 W&B 运行历史。

6. 模型推理

为测试微调后的模型,我们将提供来自数据集的示例提示。

messages = [{"role": "system", "content": instruction},
    {"role": "user", "content": "I bought the same item twice, cancel order {{Order Number}}"}]

prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    
inputs = tokenizer(prompt, return_tensors='pt', padding=True, truncation=True).to("cuda")

outputs = model.generate(**inputs, max_new_tokens=150, num_return_sequences=1)

text = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(text.split("assistant")[1])

微调后的模型已学到相应风格,并给出了准确的回复。

测试微调模型。

7. 保存分词器与模型

将微调后的模型本地保存,并推送至 Hugging Face Hub。push_to_hub 函数会创建新模型仓库并将模型文件推送到您的 Hugging Face 仓库。

# Save the fine-tuned model
trainer.model.save_pretrained(new_model)
trainer.model.push_to_hub(new_model, use_temp_dir=False)

Hugging Face Hub 上的模型仓库。

来源:kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot

如需微调更大的 Llama 3 模型,请查看 微调 Llama 3.1 进行文本分类 教程。该教程很受欢迎,可帮助您完成 LLM 的完整任务。

8. 保存 Notebook

点击右上角的“Save Version”,选择快速保存选项,并将保存输出选项改为保存模型文件与全部代码。

连同模型文件一起保存 Kaggle Notebook。

查看 在客户支持上微调 Llama 3.2 Kaggle Notebook 以获取源代码、结果与输出。

本指南以代码为主。如果您在寻找零代码或低代码的 LLM 微调指南,请查看 LlaMA-Factory WebUI 新手指南:微调 LLM。

合并并导出微调后的 Llama 3.2

我们将创建一个新 Notebook,并添加之前保存的 Notebook,以访问微调后的 LoRA 适配器,避免内存问题。

请确保同时添加基础模型 “Llama 3.2 3B Instruct”。

在 Kaggle 中添加已保存的 Notebook。

安装并更新所有必要的 Python 包。

%%capture
%pip install -U bitsandbytes
%pip install transformers==4.44.2
%pip install -U accelerate
%pip install -U peft
%pip install -U trl

登录 Hugging Face CLI,以将合并后的模型推送至 Hugging Face Hub。

from huggingface_hub import login
from kaggle_secrets import UserSecretsClient
user_secrets = UserSecretsClient()

hf_token = user_secrets.get_secret("HUGGINGFACE_TOKEN")
login(token = hf_token)

提供基础模型与微调 LoRA 的位置。我们将用它们来加载基础模型并与适配器进行合并。

# Model
base_model_url = "/kaggle/input/llama-3.2/transformers/3b-instruct/1"
new_model_url = "/kaggle/input/fine-tune-llama-3-2-on-customer-support/llama-3.2-3b-it-Ecommerce-ChatBot/"

加载分词器与完整模型。

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, pipeline
from peft import PeftModel
import torch
from trl import setup_chat_format
# Reload tokenizer and model
tokenizer = AutoTokenizer.from_pretrained(base_model_url)

base_model_reload= AutoModelForCausalLM.from_pretrained(
    base_model_url,
    low_cpu_mem_usage=True,
    return_dict=True,
    torch_dtype=torch.float16,
    device_map="auto",
)

将聊天格式应用于模型与分词器。然后,将基础模型与 LoRA 适配器合并。

# Merge adapter with base model
base_model_reload, tokenizer = setup_chat_format(base_model_reload, tokenizer)
model = PeftModel.from_pretrained(base_model_reload, new_model_url)

model = model.merge_and_unload()

为验证模型是否成功合并,向其提供示例提示并生成响应。

instruction = """You are a top-rated customer service agent named John. 
    Be polite to customers and answer all their questions.
    """

messages = [{"role": "system", "content": instruction},
    {"role": "user", "content": "I have to see what payment payment modalities are accepted"}]

prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    
inputs = tokenizer(prompt, return_tensors='pt', padding=True, truncation=True).to("cuda")

outputs = model.generate(**inputs, max_new_tokens=150, num_return_sequences=1)

text = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(text.split("assistant")[1])

如我们所见,微调后的模型工作良好。

测试微调后的模型。

本地保存分词器与模型。

new_model = "llama-3.2-3b-it-Ecommerce-ChatBot"

model.save_pretrained(new_model)
tokenizer.save_pretrained(new_model)

将分词器与合并模型推送到 Hugging Face 模型仓库。

model.push_to_hub(new_model, use_temp_dir=False)
tokenizer.push_to_hub(new_model, use_temp_dir=False)

几分钟后,您即可在 Hugging Face 仓库中查看所有模型文件与元数据文件。

完整模型已保存至 Hugging Face Hub。

来源:kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot

您也可以在 合并并导出微调后的 Llama 3.2 Kaggle Notebook 中查看源代码,进一步了解如何合并模型并上传至 Hugging Face Hub。

本项目的下一步是将完整模型转换为 GGUF 格式并进行量化。之后,您可以通过 Jan、Msty 或 GPT4ALL 等喜爱的聊天应用在本地使用。请参考微调 Llama 3 并在本地使用 指南,了解如何将所有 LLM 转换为 GGUF 格式并在笔记本本地使用。

将合并模型转换为 GGUF 格式

要在本地使用微调后的模型,我们首先需要将其转换为 GGUF 格式。为什么?因为这是 llama.cpp 的格式,几乎所有桌面聊天应用都支持。

将合并模型转换为 llama.cpp 格式非常容易。我们只需前往 GGUF My Repo 的 Hugging Face Hub。使用 Hugging Face 账号登录,输入微调模型仓库链接 “kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot”,并点击“Submit”。

Hugging Face Spaces: https://huggingface.co/spaces/ggml-org/gguf-my-repo

来源:GGUF My Repo

几秒钟内,模型的量化版本会在新的 Hugging Face 仓库中创建。

Hugging Face 上的 GGUF 量化模型仓库。

来源:kingabzpro/llama-3.2-3b-it-Ecommerce-ChatBot-Q4_K_M-GGUF

点击 “Files” 选项卡,仅下载 GGUF 文件。

从仓库下载量化的 GGUF 模型。

来源:llama-3.2-3b-it-ecommerce-chatbot-q4_k_m.gguf

在本地使用微调模型

我们将使用 Jan 聊天应用在本地使用我们的微调模型。前往官网 jan.ai 下载并安装应用。

下载 Jan.AI 应用

来源:Jan

点击设置,选择 “My Models” 菜单,按下 “Import Model” 按钮。然后提供模型的本地目录。

导入已保存的模型。

前往聊天菜单,并选择微调后的模型,如下所示。

选择微调后的模型

点击右侧面板的 “Assistant” 选项卡并输入系统提示。

系统提示: “You are a top-rated customer service agent named John. Be polite to customers and answer all their questions.”

添加自定义系统提示。

点击 “Model” 选项卡(位于 “Assistant” 旁),将停止 token 修改为 “<|eot_id|>”

修改停止 token。

就是这样。现在只需向客户支持 AI 询问您遇到的问题即可。

提示: “How do I order multiple items from the same vendor?”

在 Jan 应用中使用微调后的模型。

响应准确且速度极快——几乎 102 token 每秒。

结语

微调小型 LLM 能节省成本并提升推理速度。只要数据足够,您就能在特定任务上将模型性能提升到接近 GPT-4-mini 的水平。简言之,AI 的未来将是在主从式架构下以网格方式使用多个小型 LLM。

主模型将接收初始提示,并决定调用哪一个专用模型来生成答案。这将减少计算时间、提升结果并降低运行成本。

在本教程中,我们了解了 Llama 3.2 以及如何在 Kaggle 上访问它。我们还学习了如何在客户支持数据集上微调 Llama 3.2 轻量模型,使其学会以特定风格回复并提供准确的领域信息。随后,我们将 LoRA 适配器与基础模型合并,并将完整模型推送至 Hugging Face Hub。最后,我们将合并后的模型转换为 GGUF 格式,并通过 Jan 聊天应用在笔记本电脑本地使用。

参加我们的Working with Hugging Face 交互式课程,学习使用该工具与微调模型。

Abid Ali Awan

作者

Abid Ali Awan

作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。

主题