当前位置: 首页 > news >正文

丹摩征文活动|实现Llama3.1大模型的本地部署

文章目录

  • 1.前言
  • 2.丹摩的配置
  • 3.Llama3.1的本地配置
  • 4. 最终界面

丹摩

1.前言

Llama3.1是Meta 公司发布的最新开源大型语言模型,相较于之前的版本,它在规模和功能上实现了显著提升,尤其是最大的 4050亿参数版本,成为开源社区中非常强大的竞争者,能够在许多场景下与封闭模型如 OpenAI 的 GPT-4 相媲美。以下是 Llama3.1的一些主要特性:

  • 上下文窗口扩展
    Llama3.1支持最长 128K tokens 的上下文窗口,这使得它能够处理更长的文本内容,特别适用于长文档总结和复杂对话场景。
  • 多语言支持
    Llama 3.1 支持包括英语、西班牙语、法语、德语、意大利语等八种语言的生成和理解功能,非常适合全球化应用。
  • 增强的推理与工具使用能力
    Meta 声称 Llama 3.1 在数学计算、逻辑推理和工具调用方面表现卓越,这使其在许多基准测试中表现出色。
  • 高效部署与训练优化
    通过量化技术(将计算从 BF16 缩减到 FP8),Llama 3.1 的推理和训练成本显著降低,适合单节点服务器的部署。此外,它支持监督微调和生成高质量的合成数据。
  • 开源与社区支持
    Llama 3.1 完全开源,开发者可以通过 Meta 平台和 Hugging Face 下载模型,并在本地或云端环境中运行,充分保障数据隐私与安全。同时,Meta 提供了完善的开发工具和生态系统支持,例如支持增强的检索生成(RAG)工作流。

2.丹摩的配置

下面我会从打开丹摩平台开始一步一步的教导大家配置。

  1. 首先我们打开丹摩平台,然后点击创建实例。
    在这里插入图片描述
  2. 进入下一个页面后点击绿框中的配置。推荐选择按需支付模式。
    在这里插入图片描述
  3. 根据图片选择配置
    在这里插入图片描述
  4. 开始设置镜像,平台提供多种基础镜像,便于用户快速启动应用。这些镜像都预装了必要的环境和工具,用户可以根据需求轻松选择,推荐选择绿色框选内容。
    在这里插入图片描述
  5. 创建密钥对,密钥对是为了确保安全登录,可以自定义名称,选择自动生成,并将生成的私钥下载到本地计算机。
    在这里插入图片描述
    密钥创建成功后,选择新生成的密钥对,点击立即创建,稍等片刻,系统便会成功启动。
  6. 使用密钥对登录
    在这里插入图片描述
    7.完成
    在这里插入图片描述
    平台提供了可以直接登录的JupyterLab在线入口,让你轻松访问和管理实例。
    进入终端。
    在这里插入图片描述

3.Llama3.1的本地配置

环境创建好后。使用以下指令创建新环境:

conda activate llama3

在这里插入图片描述
下面安装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

在这里插入图片描述
安装好后,下载Llama3.1-88模型,由于平台已经预装了。可以直接使用以下指令高速在内网下载。

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

完成后进行解压

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

Llama3的配置
创建一个名为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():# 从预训练的模型中获取tokenizertokenizer = 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)

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

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

服务地址务必指定为0.0.0.0,否则无法通过浏览器访问
最后我们需要把内网端口映射到公网

  1. 进入GPU云实例页面。点击操作-更多-访问控制
  2. 单击添加端口,添加streamlit服务对于端口
    添加成功后,通过访问链接即可打开Llama3.1Chatbot交互界面。

4. 最终界面

在这里插入图片描述


http://www.mrgr.cn/news/78105.html

相关文章:

  • 【R语言管理】Pycharm配置R语言及使用Anaconda管理R语言虚拟环境
  • 101页PDF | 德勤_XX集团信息化顶层规划设计信息化总体解决方案(限免下载)
  • InfluxDB时序数据库笔记(一)
  • JAVA笔记 | 策略模式+枚举Enum简单实现策略模式(可直接套用)
  • 我的创作之路:机缘、收获、日常与未来的憧憬
  • 浏览器缓存与协商缓存
  • WebGIS地图框架有哪些?
  • 二叉树oj题解析
  • 【快捷入门笔记】mySQL基本操作大全-运算符和句子
  • 系统设计时应时刻考虑设计模式基础原则
  • 架构-微服务-环境搭建
  • uniapp+vue2重新进入小程序就清除缓存,设备需要重新扫码
  • 从Full-Text Search全文检索到RAG检索增强
  • jquery-picture-cut 任意文件上传(CVE-2018-9208)
  • python oa服务器巡检报告脚本的重构和修改(适应数盾OTP)有空再去改
  • C++ static关键字
  • 利用processR软件包实现简单的中介效应模型
  • 【分治】--- 快速选择算法
  • 解决数据传送问题:内网http传输
  • 多模态大型语言模型(MLLM)综述
  • 【R安装】R语言的详细安装及环境配置(2024年11月)
  • Wordcloud也能生成一个,带html的词云图文件吗??
  • Flink中普通API的使用
  • 一篇文章了解Linux
  • 临床检验项目指标学习笔记
  • 【JUC-Interrupt】中断相关概念