丹摩征文活动|Llama3.1的部署与使用指南

在这里插入图片描述

📝个人主页🌹:Eternity._
🌹🌹期待您的关注 🌹🌹

在这里插入图片描述
在这里插入图片描述

❀ 丹摩征文

  • 1. 初识Llama3.1
  • 2. 部署流程
    • 创建实例
    • 登录实例
    • 部署LLama3.1
  • 3. 实践使用教程
  • 4. 实践感想

前言:人工智能(AI)技术正以前所未有的速度改变着我们的生活和工作方式。大型语言模型(LLM)作为AI领域的重要分支,以其卓越的自然语言处理能力、强大的知识推理能力和广泛的应用场景,成为了众多企业和开发者关注的焦点。而Llama3.1,作为这一领域的佼佼者,更是以其高效、智能和可扩展的特性,赢得了广泛的赞誉。

丹摩平台,作为AI技术应用的领先者,一直致力于为用户提供高效、稳定、安全的AI服务。在这个平台上,用户可以轻松部署各种先进的AI模型,并快速应用到实际场景中。今天,我们将一起探索在丹摩平台上部署与使用Llama3.1的奥秘,揭开其神秘的面纱,感受它带来的智能魅力。

1. 初识Llama3.1


Llama 3.1是由Meta公司推出的一款多功能、开源的AI模型系列,Llama 3.1于2024年7月由Meta公司正式发布。该模型的发布标志着开源AI模型在性能和能力上取得了重大突破,首次击败了闭源最强SOTA模型,为AI领域带来了新的活力和创新。

Llama 3.1 与其他模型对比:
在这里插入图片描述
模型规格与特点:

  • 参数规模:Llama 3.1系列包括80亿(8B)、700亿(70B)和4050亿(405B)参数版本,满足了不同场景和需求下的使用。
  • 多语言支持:原生支持8种语言,包括英语、法语、德语、印地语、意大利语、葡萄牙语、西班牙语和泰语,增强了模型的跨语言处理能力。
  • 上下文长度:最长上下文窗口达到128K,能够处理更复杂的对话和文本生成任务。
    模型架构:采用标准的仅解码器Transformer模型结构,并进行小幅改动以最大化训练稳定性。

由于资源的局限性,我们此次选择部署 Llama3.1 的 8B 版本,该版本至少需要GPU显存16G

测试环境ubuntu 22.04 python 3.12 cuda 12.1 pytorch 2.4.0

2. 部署流程


创建实例


进入控制台-GPU云实例,点击创建实例:
在这里插入图片描述

我们这里只是短期需求,可以选择按量付费,其次选择GPU数量和需求的GPU型号。

创建实例推荐选择:
按量付费–GPU数量1–NVIDIA-GeForc-RTX-4090,该配置为60GB内存,24GB的显存(本次测试的LLaMA3.1 8B 版本至少需要GPU显存16G),首次创建可以就选择默认大小50GB

在这里插入图片描述
数据盘我选择60G
在这里插入图片描述

在这里插入图片描述

注意: 如果您通过官方预制方式下载模型,建议扩容至60GB

继续选择安装的镜像,这里筛选PyTorch,选择PyTorch 2.4.0。

创建密钥,输入自定义的名称,然后选择自动创建并将创建好的私钥保存的自己电脑中并将后缀改为.pem,以便后续本地连接使用。
在这里插入图片描述

创建好密钥对后,选择刚刚创建好的密钥对,并点击立即创建,等待一段时间后即可启动成功!
在这里插入图片描述

登录实例


等待实例创建成功,就可以进行登录了,在 GPU云实例 中查看实例信息:

登陆方式一:JupyterLab

平台提供了在线访问实例的 JupyterLab 入口,可以直接登录实例:
在这里插入图片描述

JupyterLab 界面:
在这里插入图片描述

登录后一般会在 /root/workspace 目录下,

  • /root/workspace:数据盘,支持扩容,保存镜像时此处数据不会重置。

登陆方式二:SSH

SSH登录一般需要以下 4 个信息:

  • 用户名:root
  • 远程主机域名或IP(这里使用host域名):实例页面获取
  • 端口号:实例页面获取
  • 登录密码或密钥(这里使用密钥):前面创建实例时保存到本地的密钥

在实例页面获取主机host和端口号:
在这里插入图片描述

ssh -p 端口号 root@主机host

部署LLama3.1


我们使用 conda 管理环境,DAMODEL示例已经默认安装了 conda 24.5.0

我们可以直接创建环境即可:

conda create -n llama3 python=3.12

在这里插入图片描述

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

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

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

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

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

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

3. 实践使用教程


在完成上述的工作后,我们可以新建 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)

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

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

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

接下来我们需要通过丹摩平台提供的端口映射能力,把内网端口映射到公网;
进入GPU 云实例页面,点击操作-更多-访问控制:
在这里插入图片描述

点击添加端口,添加streamlit服务对应端口:
在这里插入图片描述

添加成功后,通过访问链接即即可打开LLaMA3.1 Chatbot交互界面,并与其对话:
在这里插入图片描述

4. 实践感想


随着我在丹摩平台上对Llama3.1的深入部署与使用,这段充满挑战与收获的旅程已悄然接近尾声。从初次接触Llama3.1的震撼,到在丹摩平台上一步步实现其部署的喜悦,再到实际运用中对其强大功能的深刻体会,每一步都凝聚着我对AI技术的热爱与追求。

在丹摩平台的助力下,Llama3.1展现出了前所未有的智能魅力。它不仅在自然语言处理、代码生成等核心任务上表现出色,更在跨语言处理、长上下文理解等复杂场景中展现出了卓越的能力。

我相信,在丹摩平台这样的优秀平台上,Llama3.1等开源AI模型将发挥更大的作用,为更多领域带来智能化的变革。而我,也将作为这场变革的见证者和参与者,不断前行,迎接更加美好的明天。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/914414.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人际交往中,想要有好人缘,需做到“三要”,做到一个,也是好事

人际交往中,想要有好人缘,需做到“三要”,做到一个,也是好事 在这个世上,每个人都是一座孤岛,但通过人际交往这座桥梁,我们能够彼此相连,共同编织出一张温暖的社会网络。 好人缘&a…

Sql server 备份还原方法

备份 方法1,选择对应的数据库名-------》右键 任务---------》备份 默认备份类型 完整 文件后缀 .bak 方法2,选择对应的数据库名-------》右键 任务----------》生成脚本 选择要编写的数据库对象(表,视图,存储过程等) 选择对应的 服…

NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL

在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、…

【MySQL】数据库知识突破:数据类型全解析与详解

前言:本节内容讲述MySQL的数据类型, 我们在学习之前的建表的时候已经用过各种各样的数据类型。 比如int、varchar、char类型等等。其中它们是对表的结构的操作, 并没有对数据的内容进行操作,所以它叫做DDL。另外,还有…

管理 Elasticsearch 变得更容易了,非常容易!

作者:来自 Elastic Ken Exner Elasticsearch 用户,我们听到了你的心声。管理 Elasticsearch 有时会变得很复杂,面临的挑战包括性能调整、问题检测和资源优化。我们一直致力于简化你的体验。今天,我们宣布了自收购 Opster 以来的一…

Android Parcelable和Serializable的区别与联系

在Android开发中,Parcelable和Serializable是两种用来在组件之间传递数据的序列化机制。它们有不同的使用场景和性能特点。 以下是它们之间的关系和区别: 1. 什么是 Parcelable Parcelable 是 Android 特有的接口,用于高效地在进程间传递数…

Moonshine - 新型开源ASR(语音识别)模型,体积小,速度快,比OpenAI Whisper快五倍 本地一键整合包下载

Moonshine 是由 Useful Sensors 公司推出的一系列「语音到文本(speech-to-text, STT)转换模型」,旨在为资源受限设备提供快速而准确的「自动语音识别(ASR)服务」。Moonshine 的设计特别适合于需要即时响应的应用场景&a…

GitHub桌面版汉化

桌面版下载地址 https://desktop.github.com/ 汉化包下载地址 Releases cngege/GitHubDesktop2Chinese GitHub 点击运行 重启后

linux-vlan(1)

# VLAN # 1.topo # 2.创建命名空间 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns1-veth0 type veth peer name ns21-veth0 ip link add ns3-veth0 type veth peer name ns23-veth0 # 4.veth设备放入命名空间,启动接口 ip link set n…

鸿蒙ArkTS中的获取网络数据

一、通过web组件加载网页 在C/S应用程序中,都有网络组件用于加载网页,鸿蒙ArkTS中也有类似的组件。   web组件,用于加载指定的网页,里面有很多的方法可以调用,虽然现在用得比较少,了解还是必须的。   演…

屏幕解析工具——OmniParser

0 引言 OmniParser是微软开源的一种屏幕解析工具,提供了一种将用户界面截图解析为结构化元素的综合方法,通过此方法可以对UI界面进行可交互元素的提取和描述,然后将此结构化信息和任务指令,输入到大模型中,以增强大模…

string------1

文章目录 一. STL1.概念2.版本 二. string类2.1 为什么学习string类2. 标准库中的string类2.2.1 构造(7个)2.2.2 对string类对象进行“访问和修改”(1)operator[](2)迭代器1.迭代器的使用2.迭代器的价值&am…

Docker-软件容器平台

一、容器 1、什么是容器 容器就是将软件打包成标准化单元,以用于开发、交付和部署 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows…

LED和QLED的区别

文章目录 1. 基础背光技术2. 量子点技术的引入3. 色彩表现4. 亮度和对比度5. 能效6. 寿命7. 价格总结 LED和 QLED都是基于液晶显示(LCD)技术的电视类型,但它们在显示技术、色彩表现和亮度方面有一些关键区别。以下是两者的详细区别&#xff…

速通LoRA:《LoRA: Low-Rank Adaptation of Large Language Models》全文解读

文章目录 总览AbstractIntroductionProblem StatementAren’t Existing Solutions Good Enough?Our MethodLow-Rank-Parametrized Update MatricesApplying LoRA to Transformer 何为高斯随机初始化Empirical ExperimentsBaselinesRoBERTa base/largeDeBERTa XXLGPT-2 medium/…

计算机图形学论文 | 木工设计与制造计划的共同优化

🦌🦌🦌读论文 我们的系统共同探索离散设计变量和制造计划的空间,以生成(设计,制造计划)对的帕累托前沿,使制造成本最小化。在该图中,(a)是椅子的输入设计和仅探索该设计的…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备:大华IPC摄像头局域网访问异常解决办法

在当今社会,安全监控已成为各类场所不可或缺的一部分。无论是家庭、学校、商业场所还是公共场所,安全监控设备都扮演着至关重要的角色。在众多监控品牌中,大华IPC摄像头凭借其高清画质、强大功能和卓越稳定性,赢得了市场的广泛认可…

phpcms-tree(PHP无限级别分类)

phpcms-tree,是一个从PHPCMS v9最新版中提取出来的无限级别分类的源码,可以整合到任何项目中。 使用方法 参考Src/index.php里的实例。 源码下载: 支持本程序,请到Gitee和GitHub给我们点Star! Gitee:p…

【人工智能】Transformers之Pipeline(二十三):文档视觉问答(document-question-answering)

​​​​​​​ 目录 一、引言 二、文档问答(document-question-answering) 2.1 概述 2.2 impira/layoutlm-document-qa 2.2.1 LayoutLM v1 2.2.2 LayoutLM v2 2.2.3 LayoutXLM 2.2.4 LayoutLM v3 2.3 pipeline参数 2.3.1 pipeline对象实例化…

深入浅出 ChatGPT 底层原理:Transformer

Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年,人工智能技…