跳转到主要内容
Chinese, Simplified

category


微调是在生产中部署开源大型语言模型(LLM)的关键步骤。它允许您自定义模型,以更好地满足您的特定需求和用例。本节提供了关于如何使用各种平台和工具微调开源LLM的全面指南。

Modal


Klu模态微调
在生产中使用Modal对开源大型语言模型(LLM)进行微调涉及几个步骤。这里有一个简明的指南,可以帮助您完成整个过程:

  1. 创建模式帐户--第一步是创建模式帐户。这是您唯一需要的本地依赖项。
  2. Install-Modal——使用命令pip-Install-Modal在当前Python虚拟环境中安装Modal。
  3. 设置模态令牌——使用命令Modal Token new在环境中设置模态令牌。
  4. 拥抱脸令牌——你需要在你的工作空间里有一个名为拥抱脸的秘密。使用HUGGINGFACE中的相同密钥(API令牌下的设置)填充HUGGING_FACE_HUB_TOKEN和HUGGINGFACE_TOKEN。
  5. 模特访问权限——对于几个模特,你需要转到拥抱脸页面,并同意获得访问权限的条款和条件(立即授予)。
  6. 启动培训作业--要启动培训作业,请使用命令mode run train.py--dataset sql_dataset.py--base chat7--run id chat7 sql。这个例子对Llama 7B Chat进行了微调,以生成SQL查询(在大约30分钟内为10个时期训练了10k个例子)。

Modal允许在可重复的环境中进行多GPU训练,使用您选择的分片技术可以轻松地在多达8个GPU上微调模型。您可以在代码中定义环境,这样您的微调运行工作对整个团队都是可重复的。你可以从你的应用程序或终端按需生成微调运行,并且只在使用GPU时支付GPU的费用。Modal还允许您轻松定义和运行超参数扫描。

请记住,微调通常是一个迭代过程。在验证和测试集上获得令人满意的性能后,实施强大的安全措施以保护LLM和应用程序免受潜在威胁和攻击至关重要。

最后,需要注意的是,微调是一种用于提高机器学习模型性能的技术。与提示设计相比,它提供了几个优势,包括提高了结果质量,能够在比提示中更多的示例上进行训练,由于更短的提示而节省了令牌,以及减少了请求延迟。

Together.ai


使用Together.ai对生产中的开源大型语言模型(LLM)进行微调涉及几个步骤。这里有一个简明的指南:

形成数据集首先,您需要创建数据集。这可以使用Python来完成。数据集的格式应使问题和答案配对。这里有一个Python代码片段可以帮助您做到这一点:

将熊猫作为pd导入

import pandas as pd

df = pd.read_csv('questions_answers.csv')
df['text'] = df.apply(lambda row: '<human>:' + row['Question'] + ' <bot>:' + row['Answer'], axis=1)
df[['text']].to_json('train.jsonl', orient='records', lines=True)


此代码读取包含问题和答案的CSV文件,将数据格式化为特定格式,然后将其保存为JSONL文件。

上传数据集一旦数据集准备好,您需要使用以下命令将其上传到Together.ai:

together files upload train.jsonl


此命令将在上一步中创建的JSONL文件上载到Together.ai。

运行微调上传数据集后,您可以使用以下命令启动微调过程:

together finetune create -t file-740136e9-d376-4d0c-9d5e-c9f96bfbed8f -m togethercomputer/llama-2-7b-chat


此命令启动Together.ai上的微调过程。

检查结果您可以使用以下命令检查微调过程的结果:

together finetune list-events ft-c96e9e44-c6b2-41f6-a659-3371ae7a1231


此命令列出微调过程的事件。

在生产中使用微调模型成功微调模型后,您可以在应用程序中使用它。这里有一个Python代码片段可以帮助您做到这一点:

import os
from typing import Any, Dict
import together
from langchain.llms.base import LLM
from langchain.utils import get_from_dict_or_env
from pydantic import Extra, root_validator

class TogetherLLM(LLM):
"""Together large language models."""
model: str = "togethercomputer/llama-2-70b-chat" # model endpoint to use
together_api_key: str = os.environ["TOGETHER_API_KEY"] # Together API key


这段代码为微调模型定义了一个类,并设置了模型端点和API键。

请记住,微调是一个可选步骤,可以提高LLM在特定任务中的性能。还值得注意的是,可以使用各种技术进行微调,例如低秩自适应(LoRA)。

SkyPilot


在生产中使用SkyPilot对开源大型语言模型(LLM)进行微调和部署需要几个步骤。这里有一个简明的指南,可以帮助您完成整个过程:

微调LLM

  • 设置您的环境--克隆项目存储库并使用pip安装SkyPilot和DVC。配置您的云提供商凭据。您可以参考SkyPilot文档了解更多详细信息。
pip install skypilot[all] dvc[all]

  • 微调您的模型——使用DVC进行可复制的管道和高效的数据集版本控制,使用SkyPilot按需启动云计算资源,使用HuggingFace Transformers进行高效的transformer模型培训。
  • 使用SkyPilot进行经济高效的微调——SkyPilot可以用于在您自己的云帐户中对您的私人数据进行经济有效的LLM微调。它通过支持自动恢复的现场实例微调,提供了高GPU可用性并降低了成本。
sky spot launch -n vicuna train.yaml \
--env ARTIFACT_BUCKET_NAME=<your-bucket-name> \
--env WANDB_API_KEY=<your-wandb-api-key>


部署LLM

  • 为您的模型服务——培训完成后,您可以在自己的云环境中使用一个命令为您的模式服务。
sky launch -c serve serve.yaml --env MODEL_CKPT=<your-model-checkpoint>/chatbot/7b

  • 使用SkyPilot进行部署--SkyPilot通过在任何云上启动作业和集群,自动排队和运行它们,并通过在您能够使用的所有区域/地区/云中进行资源调配(自动故障切换),最大限度地提高GPU可用性,从而抽象出云基础设施。
  • 一键在云中启动vLLM——SkyPilot提供了一个简单的yaml服务。只需一个SkyPilot命令,您就可以在自己的云帐户中,在任何云上启动LLaMA-65B的vLLM。
sky launch -c vllm serve.yaml --gpus A100 --env MODEL_NAME=decapoda-research/llama-13b-hf

  • 解决GPU短缺问题——LLM通常需要高端GPU,如令人垂涎的A100-40GB或A100-80GB GPU。SkyPilot配备了一个自动故障切换设置器,如果无法设置请求的资源,该设置器会自动重试在不同区域(或云)中设置集群。
  • 使用托管现货作业可节省成本--SkyPilot支持可从抢占中自动恢复的托管现货作业。此功能通过使可抢占的点实例适用于长时间运行的作业,节省了大量成本(例如,GPU虚拟机高达70%)。

请记住,将<your-backet-name>和<your-wandb-api-key>替换为实际存储桶名称和wandb api密钥,并将<your-model-checket>替换为模型检查点的路径。

原文地址
https://klu.ai/blog/open-source-llm-models
本文地址
Article

微信

知识星球

微信公众号

视频号