亲身体验Llama 3.1:开源模型的部署与应用之旅

部署运行你感兴趣的模型镜像

1 Llama 3.1系列的诞生

在人工智能的浪潮中,大型语言模型(LLM)正以其独特的魅力和潜力,成为深度学习领域的一颗耀眼明星。

这些模型不仅在自然语言处理(NLP)领域取得了令人瞩目的成就,还在计算机视觉(CV)、多模态学习和科学计算等多个领域展现出了巨大的应用前景。

开源LLM的兴起,为全球的开发者和研究者提供了一个广阔的舞台,他们可以在这个舞台上自由地探索、实验和创新。

2024年7月23日,Meta公司发布了Llama 3.1系列,这一事件无疑为开源模型领域注入了新的活力。

Llama 3.1 405B模型,以其4050亿的参数量和128K Tokens的上下文长度,成为了Meta公司迄今为止最大规模的训练成果之一。

在这里插入图片描述

这一成就的背后,是超过15万亿的Tokens和超过1.6万个H100 GPU的庞大计算资源的支撑。

Llama 3.1在规模和性能上的显著提升,不仅在技术上实现了飞跃,更在多种任务中展现出了前所未有的灵活性和潜力。

2 大型模型的未来发展

作为一名AI工程师,我对这一进展感到无比兴奋。

这些大型模型的出现,不仅推动了技术的进步,也为我们的日常工作带来了新的挑战和机遇。

它们提供了强大的工具,使我们能够构建更加智能和高效的系统,我们也面临着如何优化这些模型以适应特定应用场景的问题,以及如何确保这些模型的可解释性和安全性。

在体验这些大型模型的过程中,我深刻感受到了它们的强大能力。例如,Llama 3.1 405B模型在处理长文本数据时的出色表现,让我对自然语言的理解有了新的认识。

它能够理解和生成连贯、逻辑性强的文本,这在以往的模型中是难以想象的,并且它在多语言支持方面的能力也令人印象深刻,这对于全球化的应用开发来说是一个巨大的优势。

3 使用教程

(1)使用 conda 管理环境,DAMODEL示例已经默认安装了 conda 24.5.0 ,直接创建环境即可:

conda create -n llama3 python=3.12

(2)环境创建好后,使用如下命令切换到新创建的环境:

conda activate llama3

(3)继续安装部署LLama3.1需要的依赖:

pip install langchain==0.1.15
pip install streamlit==1.36.0
pip install transformers==4.44.0
pip install accelerate==0.32.1

(4)安装好后,下载 Llama-3.1-8B 模型,平台已预制Llama-3.1-8B-Instruct模型,执行以下命令即可内网高速下载:

wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar

(5)下载完成后解压缩/Llama-3.1-8B-Instruct.tar

tar -xf Llama-3.1-8B-Instruct.tar

(6)模型下载好后,准备加载模型及启动Web服务等工作,新建 llamaBot.py 文件并在其中输入以下内容:

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import streamlit as st

# 创建一个标题和一个副标题
st.title("💬 LLaMA3.1 Chatbot")
st.caption("🚀 A streamlit chatbot powered by Self-LLM")

# 定义模型路径
mode_name_or_path = '/root/workspace/Llama-3.1-8B-Instruct'

# 定义一个函数,用于获取模型和tokenizer
@st.cache_resource
def get_model():
    # 从预训练的模型中获取tokenizer
    tokenizer = AutoTokenizer.from_pretrained(mode_name_or_path, trust_remote_code=True)
    tokenizer.pad_token = tokenizer.eos_token
    # 从预训练的模型中获取模型,并设置模型参数
    model = AutoModelForCausalLM.from_pretrained(mode_name_or_path, torch_dtype=torch.bfloat16).cuda()
  
    return tokenizer, model

# 加载LLaMA3的model和tokenizer
tokenizer, model = get_model()

# 如果session_state中没有"messages",则创建一个包含默认消息的列表
if "messages" not in st.session_state:
    st.session_state["messages"] = []

# 遍历session_state中的所有消息,并显示在聊天界面上
for msg in st.session_state.messages:
    st.chat_message(msg["role"]).write(msg["content"])

# 如果用户在聊天输入框中输入了内容,则执行以下操作
if prompt := st.chat_input():
    
    # 在聊天界面上显示用户的输入
    st.chat_message("user").write(prompt)
    
    # 将用户输入添加到session_state中的messages列表中
    st.session_state.messages.append({"role": "user", "content": prompt})

    # 将对话输入模型,获得返回
    input_ids = tokenizer.apply_chat_template(st.session_state["messages"],tokenize=False,add_generation_prompt=True)
    model_inputs = tokenizer([input_ids], return_tensors="pt").to('cuda')
    generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512)
    generated_ids = [
        output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
    ]
    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    # 将模型的输出添加到session_state中的messages列表中
    st.session_state.messages.append({"role": "assistant", "content": response})
    # 在聊天界面上显示模型的输出
    st.chat_message("assistant").write(response)
    print(st.session_state)

(7)在终端中运行以下命令,启动 streamlit 服务,server.port 可以更换端口:

streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024

需注意服务地址务必指定位0.0.0.0,否则无法通过浏览器访问

(8)接下来我们需要通过丹摩平台提供的端口映射能力,把内网端口映射到公网;

进入GPU 云实例页面,点击操作-更多-访问控制:

在这里插入图片描述

(9)点击添加端口,添加streamlit服务对应端口:

在这里插入图片描述

(10)添加成功后,通过访问链接即即可打开LLaMA3.1 Chatbot交互界面,并与其对话:

在这里插入图片描述

4 Llama 3.1在客户服务中的运用

在实际应用中,我尝试将Llama 3.1 405B模型集成到一个客户服务机器人中,这个机器人需要处理大量的用户查询,并提供准确的回答。

通过使用Llama 3.1 405B模型,机器人能够更好地理解用户的意图,提供更加个性化的服务。这不仅提高了用户的满意度,也提高了服务的效率。

我还尝试将Llama 3.1 405B模型应用于一个复杂的数据分析项目中,在这个项目中,模型需要从大量的数据中提取有价值的信息,并生成报告。

Llama 3.1 405B模型的上下文理解能力,使得它能够从数据中提取出更深层次的关联和模式,这对于数据分析来说是非常宝贵的。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

### 关于 MX450 显卡是否能够支持运行 Llama3.1:8b 模型 #### 硬件配置模型需求分析 用户的笔记本电脑配备了 Intel i7-11390H 处理器、16GB 内存和 NVIDIA GeForce MX450 显卡(2GB 显存)。MX450 的性能接近 GTX 1650 的 70%-80%,属于入门级独立显卡[^2]。然而,Llama3.1:8b 模型虽然参数量较小(80亿参数),但仍然需要一定的显存和计算能力来支持推理或训练。 对于 Llama3.1:8b 模型,即使采用 FP16 或 INT8 量化技术,其最低显存需求通常在 6GB 左右。因此,MX450 的 2GB 显存可能不足以直接加载该模型[^1]。此外,MX450 的 CUDA 核心数量较少(1024 或 896 核心),可能导致推理速度显著下降。 #### 技术可行性优化方法 尽管硬件限制明显,用户可以通过以下方式尝试运行 Llama3.1:8b 模型1. **显存优化**:使用量化技术(如 FP16 或 INT8)可以减少显存占用。例如,INT8 量化可将显存需求降低至约 4GB[^1]。 2. **分批加载**:通过分批次加载模型权重并卸载不必要的部分,可以缓解显存不足的问题。 3. **CPU 推理**:如果显存仍然不足,可以考虑使用 CPU 进行推理。Intel i7-11390H 的多核性能较强,能够在一定程度上弥补显卡性能的不足[^1]。 以下是使用 PyTorch 加载 Llama3.1:8b 模型的代码示例,其中包含显存优化选项: ```python import torch from transformers import LlamaForCausalLM, LlamaTokenizer # 设置设备为 GPU 或 CPU device = "cuda" if torch.cuda.is_available() else "cpu" # 加载模型应用量化 model_name = "path/to/llama3.1:8b" tokenizer = LlamaTokenizer.from_pretrained(model_name) model = LlamaForCausalLM.from_pretrained( model_name, torch_dtype=torch.float16, # 使用 FP16 减少显存占用 low_cpu_mem_usage=True, # 优化 CPU 内存使用 device_map="auto" # 自动分配到可用设备 ) # 测试推理 input_text = "Hello, how are you?" inputs = tokenizer(input_text, return_tensors="pt").to(device) outputs = model.generate(inputs.input_ids, max_length=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` #### 环境配置注意事项 在安装 PyTorch 和 CUDA 时,需确保版本兼容性。根据用户描述,MX450 显卡在 Win11 + CUDA 11.2 环境下表现良好[^3]。建议安装显卡驱动匹配的 CUDA 版本,并选择对应的 PyTorch 包。例如,使用以下命令安装 PyTorch: ```bash pip install torch==1.10.0+cu112 torchvision==0.11.0+cu112 torchaudio===0.10.0 -f https://download.pytorch.org/whl/cu112/torch_stable.html ``` #### 结论 MX450 显卡由于显存限制(2GB),无法直接运行未优化的 Llama3.1:8b 模型。然而,通过采用量化技术、分批加载或切换至 CPU 推理,用户可以在一定程度上实现模型的运行。需要注意的是,推理速度可能会受到硬件性能的显著影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值