大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构!

介绍

大型语言模型很棒!但在执行特定任务或成为领域主题专家时,它就不那么好了。

这就是精细调整发挥作用的地方!

在本文中,我将分享如何使用 Nebius Ai Studio 在几分钟内微调您的 LLM。

因此,事不宜迟,

让我们开始吧!

什么是微调?

在开始之前,让我们先了解一下什么是微调!

简单来说,微调是采用预先训练的模型并在特定领域的数据集上进一步训练的过程。

我们都知道如今的法学硕士 (LLM) 非常强大,但它们对于专业任务来说还远远不够完美。而成为专家的最佳方法之一就是利用特定领域的知识进行微调。

这意味着针对我们想要实现的确切任务重新训练模型的某些部分。这比重新训练整个模型的成本更低。

然而,对于像我这样不是传统 ML 工程师的人来说,微调你的 LLM 并非易事。Nebius AI Studio 让你更轻松地微调你的开源 LLM。

借助其直观的 UI 平台或 Python SDK,每个人都可以进行微调,无论他们是否熟悉编码。

🎥想要快速教程吗?观看此分步视频:

如何使用 Nebius 微调你的法学硕士课程

现在,让我们看看如何使用 Nebius AI Studio 轻松地微调您的 LLM。

因此,Nebius AI Studio提供了三种方法来微调您的 LLM:

  • Web 控制台——一种无需代码的解决方案,可轻松进行微调。
  • Python SDK – 一种使用 Python 的开发人员友好型方法。
  • cURL 请求- 基于 API 的自动化和脚本微调。

我们将了解如何使用每种方法微调您的模型。

先决条件

1. 选择模型

首先,你需要选择需要微调的模型。Nebius AI Studio 支持30 多种领先模型的微调,包括:

  • Llama 3 系列(1B–70B 参数)
  • Qwen 系列(15 亿至 720 亿个参数)
  • DeepSeek R1和其他专用模型

您可以浏览可用模型并选择适合您用例的模型。

2.准备数据集

接下来,您必须准备用于训练模型和验证训练结果的数据集。Nebius AI Studio 支持数据集文件的JSON行格式 ( )。. jsonl

💡提示:将数据分成两个数据集,80–90%用于训练,10–20%用于验证

3. 获取您的 API 密钥

获取 Nebius API 密钥并将其存储在.env变量中

NEBIUS_API_KEY=<Your_API_key>

Enter fullscreen mode Exit fullscreen mode

完成这些步骤后,您就可以开始微调模型了。

通过 Web 控制台进行微调(无需编码)

微调 LLM 的最简单方法是通过Nebius AI Studio 的 Web 控制台。您无需为此编写一行代码。

  • 登录Nebius AI Studio并转到微调部分。
  • 上传您的训练和验证数据集。
  • 选择您的模型和微调参数。
  • 单击创建作业
  • 使用所需模型名称下的检查点链接下载包含微调模型的文件。

我制作了一个视频来展示如何做到这一点,你可以在这里查看。

通过 Python SDK 进行微调

如果您更喜欢使用 Python,则可以使用 Nebius 的 Python SDK 以编程方式微调您的模型。

1.安装依赖项

首先,我们将使用以下命令安装依赖项:

pip3 install openai

Enter fullscreen mode Exit fullscreen mode

2.设置OpenAI客户端

使用 Nebius AI 的 API 端点和您的 API 密钥设置 OpenAI 客户端

import os
from openai import OpenAI
import time

client = OpenAI(
    base_url="https://api.studio.nebius.com/v1/",
    api_key=os.environ.get("NEBIUS_API_KEY"),
)

Enter fullscreen mode Exit fullscreen mode

3.上传你的数据集

接下来,我们将上传之前创建的训练数据集和验证数据集

# Upload a training dataset
training_dataset = client.files.create(
    file=open("<dataset_name>.jsonl", "rb"), # Specify the dataset name
    purpose="fine-tune"
)

# Upload a validation dataset
validation_dataset = client.files.create(
    file=open("<dataset_name>.jsonl", "rb"), # Specify the dataset name
    purpose="fine-tune"
)

Enter fullscreen mode Exit fullscreen mode

4. 创建微调作业

之后,我们需要定义微调参数,例如epoch 的数量以及是否使用LoRA 自适应来提高效率。

如果您想添加更多参数,请查看Nebius Docs 以获取更多信息。

job_request = {
    "model": "meta-llama/Llama-3.1-8B-Instruct", # Choose the model
    "training_file": training_dataset.id,
    "validation_file": validation_dataset.id,
    "hyperparameters": {
        "n_epochs": 3, # Number of epochs for training
        "lora": True,  # Enable LoRA for fine-tuning efficiency
    },
    "integrations": [],
}

Enter fullscreen mode Exit fullscreen mode

然后我们将创建并运行微调作业

# Create and run the fine-tuning job
job = client.fine_tuning.jobs.create(**job_request)

Enter fullscreen mode Exit fullscreen mode

5. 监控作业状态

如果您正在微调模型,则meta-llama/Llama-3.1-70B-Instruct可能需要一些时间。为此,我们将定期检查作业是否仍在运行或已完成:

# Make sure that the job has been finished or cancelled
active_statuses = ["validating_files", "queued", "running"]
while job.status in active_statuses:
    time.sleep(15)
    job = client.fine_tuning.jobs.retrieve(job.id)
    print("current status is", job.status)

print("Job ID:", job.id)

Enter fullscreen mode Exit fullscreen mode

6. 检索检查点并保存

微调会创建多个检查点(模型的中间版本)。我们将检索它们并将文件保存到这些目录中。

if job.status == "succeeded":
    # Check the job events
    events = client.fine_tuning.jobs.list_events(job.id)
    print(events)

    for checkpoint in client.fine_tuning.jobs.checkpoints.list(job.id).data:
        print("Checkpoint ID:", checkpoint.id)

        # Create a directory for every checkpoint
        os.makedirs(checkpoint.id, exist_ok=True)

        for model_file_id in checkpoint.result_files:
            # Get the name of a model file
            filename = client.files.retrieve(model_file_id).filename

            # Retrieve the contents of the file
            file_content = client.files.content(model_file_id)

            # Save the contents into a local file
            file_content.write_to_file(filename)

Enter fullscreen mode Exit fullscreen mode

我们已经对模型进行了微调!接下来,我们将托管这些模型。

你可以在 Google Colab 上以交互方式尝试此方法: Colab Notebook

通过 cURL 请求进行微调

如果您更喜欢基于 API 的微调或想要自动化该过程,您可以使用cURL 请求直接与 Nebius AI Studio 交互。

1.上传你的数据集

运行以下 cURL 命令来上传您的训练数据集:

curl 'https://api.studio.nebius.com/v1/files' 
   -H 'Accept: application/json' 
   -H 'Content-Type: multipart/form-data' 
   -H "Authorization: Bearer $NEBIUS_API_KEY"
   -F 'file=@<dataset-name>.jsonl' 
   -F 'purpose=fine-tune'

Enter fullscreen mode Exit fullscreen mode

💡 注意:保存响应中的文件 ID;这是创建微调作业所必需的。

同样,上传你的验证数据集:

curl 'https://api.studio.nebius.com/v1/files' 
   -X 'POST' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY' 
   -H 'Accept: application/json' 
   -H 'Content-Type: multipart/form-data' 
   -F 'file=@validation_dataset.jsonl' 
   -F 'purpose=fine-tune'

Enter fullscreen mode Exit fullscreen mode

2. 发送微调请求:

现在,我们将通过运行以下命令来创建一个微调作业:

curl 'https://api.studio.nebius.com/v1/fine_tuning/jobs' 
   -X 'POST' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY' 
   -H 'Accept: application/json' 
   -H 'Content-Type: application/json' 
   -d '{
      "model": "meta-llama/Llama-3.1-8B-Instruct",
      "training_file": "your_training_file_id",
      "validation_file": "your_validation_file_id",
      "hyperparameters": {
         "n_epochs": 3, 
         "batch_size": 8,
         "learning_rate": 0.0001,
         "lora": true,
         "lora_r": 16,
         "lora_alpha": 32,
         "lora_dropout": 0.1,
         "weight_decay": 0.01
      }
   }'

Enter fullscreen mode Exit fullscreen mode

💡 替换占位符:

  • "your_training_file_id"→ 步骤2中的文件ID。
  • "your_validation_file_id"→ 步骤2中的文件ID。

提交后,Nebius AI Studio 将返回一个作业 ID。请保留此 ID 以跟踪进度

4. 监控微调作业

微调需要时间。要检查作业的状态,请运行以下命令:

curl 'https://api.studio.nebius.com/v1/fine_tuning/jobs/<job_ID>' 
   -X 'GET' 
   -H 'Accept: application/json' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY'

Enter fullscreen mode Exit fullscreen mode

确保训练已成功。为此,请检查作业事件。它们是在作业状态发生变化时创建的。

curl 'https://api.studio.nebius.com/v1/fine_tuning/jobs/<job_ID>/events' 
   -X 'GET' 
   -H 'Accept: application/json' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY' 
   --url-query limit=<...> 
   --url-query after=<...>

Enter fullscreen mode Exit fullscreen mode

5. 检索检查点

微调完成后您可以检索训练好的模型检查点。这些是模型在不同阶段保存的中间版本。

curl 'https://api.studio.nebius.com/v1/fine_tuning/jobs/<job_ID>/checkpoints' 
   -X 'GET' 
   -H 'Accept: application/json' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY'

Enter fullscreen mode Exit fullscreen mode

我们将在响应中获得检查点 ID。

每个检查点由多个文件组成,这些文件包含微调模型的不同部分。要获取文件名和扩展名,请使用:

curl 'https://api.studio.nebius.com/v1/files/<file_ID>' 
   -X 'GET' 
   -H 'Accept: application/json' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY'

Enter fullscreen mode Exit fullscreen mode

对检查点中的每个文件重复此请求以下载所有必需的文件。

6. 下载微调模型

检索模型文件内容后,请确保使用正确的文件名和扩展名保存它们

curl 'https://api.studio.nebius.com/v1/files/<file_ID>/content' 
   -X 'GET' 
   -H 'Accept: application/json' 
   -H 'Authorization: Bearer $NEBIUS_API_KEY'

Enter fullscreen mode Exit fullscreen mode

对检查点中的每个文件重复此请求以下载所有必需的文件。

7. 正确保存模型文件

检索模型文件内容后,请确保使用正确的文件名和扩展名保存它们

在 Nebius AI Studio 上托管您的微调模型

模型微调后,下一步就是让您自己和其他人可以访问它。在Nebius AI Studio上托管模型可让您无缝部署和使用它。

无论是精细化的LLM还是LoRA适配器,都可以直接通过平台请求托管。

在开始之前,请确保您已:

✅已准备好部署的经过微调的模型

✅包含档案中的模型文件的共享云存储链接。

按照以下简单步骤在 Nebius AI Studio 中托管您的模型

Web 控制台中,转到微调部分。

  1. 单击  请求模型或 LoRA 托管

  2. 在打开的窗口中,选择请求 LoRA 模型托管

  3. 输入型号名称并确保您的电子邮件正确。
  4. 将链接粘贴到您的模型文件档案并(如果适用)描述您的LoRA 适配器类型
  5. 单击提交,您的请求将被发送到Nebius AI 支持团队进行处理。

一旦获得批准,您的模型将被托管并可供使用!

结论

就这样了!在本文中,我们了解了如何通过 3 种不同的方法轻松地微调我们的 LLM。

如果您发现这篇文章有用,请与您的同行和社区分享,以传播此信息。

如果您对此有任何疑问,请随意发表评论或直接发信息给我!

感谢您的阅读!

原文地址:https://mp.weixin.qq.com/s/ReimGEYxnw89d1PulRO7Fw
本文由博客一文多发平台 OpenWrite 发布!

吾日三省吾码
25 声望4 粉丝