一、简介
Llama 3.1 模型介绍
Llama 3.1 是一种大型的、开源的语言生成模型,类似于OpenAI的GPT-3,但它是由Meta(前Facebook)推出的。Llama 3.1具备强大的自然语言处理能力,可以执行各种语言任务,如对话生成、文本摘要、机器翻译等。Llama 3.1 设计之初就是为了使其在各种硬件和资源环境下高效运行,因此其能够通过优化模型架构,在不同规模的设备上实现较好的性能。
私有化部署的优势
私有化部署指的是将Chatbot部署在自己的服务器或者私有云环境中,而非依赖第三方服务(如OpenAI、Google Cloud等)。这样做有几个显著的优势:
1.数据隐私和安全性:企业或用户的数据不会离开本地系统,避免了将敏感数据暴露给外部服务提供商的风险。
2.定制化能力:用户可以根据特定业务需求对Chatbot进行更高层次的定制,包括训练专门的模型、调整对话策略等。
3.降低长期成本:虽然初期部署可能需要较高的基础设施投资,但长期来看,私有化部署可避免按调用次数收费的云服务费用。
4.可控性:企业拥有对整个系统的完全控制,能够随时进行优化和调整,而不依赖于第三方平台的更新和维护。
应用场景
基于 Llama 3.1 和丹摩算力的私有化部署 Chatbot 可应用于多个领域:
企业客服:通过自动化解答客户问题,提高服务效率,减少人工成本。
智能助手:提供个性化的智能助手服务,帮助用户完成日常任务。
教育与培训:为学生提供智能辅导,支持实时问答与互动式学习。
医疗健康:通过与医疗数据对接,提供初步的健康咨询服务。
三、部署 Llama 3.1
1. 创建实例
由于 CogVideoX 在 FP-16 精度下的推理至少需 18GB 显存,微调则需要 40GB 显存,我们这里需要选择大于 40GB 显存的实例。
镜像选择 PyTorch2.3.0、Ubuntu-22.04,CUDA12.1 镜像。
创建密钥对
进行实例
点击操作里的JupyterLab,进入JupyterLab的页面。平台已预置了调试好的代码库,开箱即用。
点击Terminal,进入终端页面
2. 安装依赖
安装 Llama 3.1 部署所需的 Python 库:
pip install langchain==0.1.15
pip install streamlit==1.36.0
pip install transformers==4.44.0
pip install accelerate==0.32.1
3. 下载模型
用丹摩平台的内网高速下载 Llama-3.1-8B-Instruct 模型:
wget http://file.s3/damodel-openfile/Llama3/Llama-3.1-8B-Instruct.tar
tar -xf Llama-3.1-8B-Instruct.tar
四、Chatbot 项目开发
- 编写Web聊天机器人代码
创建 llamaBot.py 文件,实现一个简单的 Web 聊天机器人:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import streamlit as st# 创建标题和副标题
st.title("💬 LLaMA3.1 Chatbot")
st.caption("🚀 A Streamlit chatbot powered by Llama 3.1")# 模型路径
model_path = '/root/workspace/Llama-3.1-8B-Instruct'# 获取模型和 tokenizer
@st.cache_resource
def load_model():tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)tokenizer.pad_token = tokenizer.eos_tokenmodel = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16).cuda()return tokenizer, modeltokenizer, model = load_model()# 初始化会话状态
if "messages" not in st.session_state:st.session_state["messages"] = []# 显示历史消息
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)st.session_state.messages.append({"role": "user", "content": prompt})# 生成模型回复input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to('cuda')output = model.generate(input_ids, max_new_tokens=512)response = tokenizer.decode(output[0], skip_special_tokens=True)st.session_state.messages.append({"role": "assistant", "content": response})st.chat_message("assistant").write(response)
2. 运行 Streamlit 服务
在终端中启动 Web 服务:
streamlit run llamaBot.py --server.address 0.0.0.0 --server.port 1024
需注意:
访问地址:务必使用 0.0.0.0,以便通过浏览器访问实例。
端口映射:通过丹摩平台的访问控制,将内部端口映射至公网。
3. 添加端口映射
进入 GPU 云实例页面,选择操作 -> 更多 -> 访问控制,添加 Streamlit 服务端口,映射成功后即可通过访问链接打开 Chatbot 界面。
五、效果展示
访问1024的端口链接,可见 Llama 3.1 Chatbot 的交互界面,用户可以直接输入问题,与 Chatbot 进行对话。
示例对话:
用户:请简述 Llama 3.1 的主要特性。
Chatbot:Llama 3.1 是 Meta 发布的最新开源模型,包含 405B、70B 和 8B 三个版本,支持 128K 上下文长度,具备更强的理解和生成能力。