当前位置:   article > 正文

大模型实操与API调用 | 三十五、Llama 3.1模型部署与微调详细实战

llama 3.1模型部署与微调详细实战

Llama 3.1模型部署与微调详细实战

1. 环境准备

  • 硬件选择:选择一台至少配备NVIDIA 4090 GPU的服务器,显存至少24GB。
  • 操作系统安装:安装Ubuntu 22.04 LTS版本。
  • 基础软件配置:安装Python 3.12、CUDA 12.1和cuDNN。

2. 安装依赖

1)Python环境配置

创建Python虚拟环境,并激活。

python -m venv llama_env
source llama_env/bin/activate
  • 1
  • 2

2)依赖库安装

使用pip安装所需的库,并通过清华大学TUNA镜像站加速下载。

pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install fastapi uvicorn modelscope transformers accelerate
  • 1
  • 2
  • 3

3. 模型下载

使用modelscope下载

编写脚本d.py使用modelscope库下载Llama 3.1模型。

import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os

model_dir = snapshot_download(
    'LLM-Research/Meta-Llama-3.1-8B-Instruct',
    cache_dir='/root/autodl-tmp',
    revision='master'
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行脚本:

python /root/autodl-tmp/d.py
  • 1

4. 模型推理

1)加载模型

使用transformers库加载分词器和模型。

from transformers import AutoTokenizer, AutoModelForCausalLM

model_name_or_path = '/root/autodl-tmp/LLM-Research/Meta-Llama-3___1-8B-Instruct'
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=False)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, device_map="auto", torch_dtype=torch.bfloat16)
  • 1
  • 2
  • 3
  • 4
  • 5

2)推理测试

编写推理测试代码,生成模型回复。

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Who are you?"}
]

input_ids = tokenizer.apply_chat_template(messages)
model_inputs = tokenizer([input_ids], return_tensors="pt").to('cuda')
generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512)
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5. 模型微调

1)数据集准备

准备包含指令和问答对的数据集。

2)导入依赖包

导入数据处理和模型训练所需的库。

from datasets import Dataset
import pandas as pd
from transformers import AutoTokenizer, AutoModelForCausalLM, DataCollatorForSeq2Seq, TrainingArguments, Trainer
  • 1
  • 2
  • 3

3)读取和处理数据集

将数据集转换为模型可接受的格式。

df = pd.read_json('huanhuan.json')
ds = Dataset.from_pandas(df)
  • 1
  • 2

定义数据处理函数,将数据集映射到该函数。

def process_func(example):
    MAX_LENGTH = 384
    # 数据处理逻辑...
    return {
        "input_ids": input_ids,
        "attention_mask": attention_mask,
        "labels": labels
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4)定义模型

加载预训练模型,并开启梯度检查点。

model = AutoModelForCausalLM.from_pretrained(model_dir)
model.enable_input_require_grads()
  • 1
  • 2

5)Lora配置

使用Lora技术配置微调参数。

from peft import LoraConfig

config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
    r=8,
    lora_alpha=32,
    lora_dropout=0.1
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

6)配置训练参数

设置训练超参数。

from transformers import TrainingArguments

args = TrainingArguments(
    output_dir="./output/llama3_1_instruct_lora",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    logging_steps=10,
    num_train_epochs=3,
    save_steps=100,
    learning_rate=1e-4,
    gradient_checkpointing=True
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

7)开始训练

使用Trainer类开始模型训练。

trainer = Trainer(
    model=model,
    args=args,
    train_dataset=tokenized_id,
    # 其他参数...
)
trainer.train()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

8)合并模型

将微调后的权重合并回基础模型。

from peft import PeftModel

model = AutoModelForCausalLM.from_pretrained(model_dir)
model = PeftModel.from_pretrained(model, model_id=lora_path)
  • 1
  • 2
  • 3
  • 4

6. API部署调用

1)编写FastAPI应用代码

创建fastapi-test.py文件,编写API服务代码。

from fastapi import FastAPI
from transformers import AutoTokenizer, AutoModelForCausalLM
import uvicorn

app = FastAPI()

@app.post("/")
async def create_item(request):
    # API逻辑...
    return answer

if __name__ == '__main__':
    model_name_or_path = '/root/autodl-tmp/LLM-Research/Meta-Llama-3___1-8B-Instruct'
    tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
    model = AutoModelForCausalLM.from_pretrained(model_name_or_path)

    uvicorn.run(app, host='0.0.0.0', port=6006, workers=1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2)启动API服务

在终端运行以下命令启动API服务:

python fastapi-test.py
  • 1

3)调用API

使用curl或Python的requests库调用API。

curl -X POST "http://127.0.0.1:6006/" \
-H 'Content-Type: application/json' \
-d '{"prompt": "What is AI?"}'
  • 1
  • 2
  • 3

7.常见问题与解决方案

  • CUDA OOM(内存不足):如果遇到内存不足问题,尝试降低per_device_train_batch_sizegradient_accumulation_steps的值,或使用梯度检查点技术。
  • 模型下载慢:由于模型文件较大,下载可能需要较长时间。建议在网络环境较好的情况下进行下载。
  • 模型加载失败:确保CUDA和cuDNN与PyTorch版本兼容,且GPU驱动是最新的。

Llama 3.1模型的强大能力,为自然语言处理领域带来了新的机遇。本文详细介绍了从环境配置到模型部署、微调,再到API服务的整个流程。希望这份指南能够帮助您顺利实现Llama 3.1模型的本地部署和应用开发。


最后

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频,免费分享!

在这里插入图片描述

一、大模型全套的学习路线

L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署

在这里插入图片描述

达到L4级别也就意味着你具备了在大多数技术岗位上胜任的能力,想要达到顶尖水平,可能还需要更多的专业技能和实战经验。

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述

三、大模型经典PDF书籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

四、AI大模型商业化落地方案

在这里插入图片描述

作为普通人在大模型时代,需要不断提升自己的技术和认知水平,同时还需要具备责任感和伦理意识,为人工智能的健康发展贡献力量。

有需要全套的AI大模型学习资源的小伙伴,可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/1002351
推荐阅读
相关标签
  

闽ICP备14008679号