[大模型实战] DAMODEL云算力平台部署LLama3.1大语言模型
目录
- 一、LLama3.1
- 二、DAMODEL云算力平台
- 2.1 提供的服务
- 2.1.1 AI训练
- 2.1.2 AI推理
- 2.1.3 高性能计算
- 2.1.4 图像/视频渲染
- 2.1.5 定制化部署
- 2.2 支持的GPU
- 三、在DAMODEL部署LLama3.1
- 3.1 在DAMODEL创建实例(装系统部署环境)
- 3.2 在DAMODEL部署LLama3.1 8B
- 3.2.1 登录实例
- 3.2.1.1 平台内置JupyterLab
- 3.2.1.2 SSH登录
- 3.2.2 部署LLama3.1
- 3.3.3 在Web端使用LLama模型推理
- 四、总结
- 五、粉丝福利 - 丹摩低价狂欢节
大模型(LLM)狭义上指基于深度学习算法进行训练的自然语言处理(NLP)模型,主要应用于自然语言理解和生成等领域,广义上还包括机器视觉(CV)大模型、多模态大模型和科学计算大模型等。
百模大战正值火热,开源 LLM 层出不穷。如今国内外已经涌现了众多优秀开源 LLM,国外如 LLaMA、Alpaca,国内如 ChatGLM、BaiChuan、InternLM(书生·浦语)等。开源 LLM 支持用户本地部署、私域微调,每一个人都可以在开源 LLM 的基础上打造专属于自己的独特大模型。
一、LLama3.1
2024 年 7 月 23 日 Meta宣布推出迄今为止最强大的开源模型——Llama 3.1 405B,同时发布了全新升级的 Llama 3.1 70B 和 8B 模型。
Llama 3.1 405B支持上下文长度为128K Tokens,在基于15万亿个Tokens、超1.6万个H100 GPU上进行训练,这也是Meta有史以来第一个以这种规模进行训练的Llama模型。
Llama 3.1 与其他模型对比:
由于资源限制,我们此次选择部署 LLaMA3.1 的 8B 版本,该版本至少需要GPU显存16G。
本次测试环境:
ubuntu 22.04
python 3.12
cuda 12.1
pytorch 2.4.0
二、DAMODEL云算力平台
DAMODEL(丹摩智算) 是专为 AI 打造的智算云,致力于提供丰富的算力资源与基础设施助力 AI 应用的开发、训练、部署。提供CPU/GPU算力集群、CPU/GPU裸金属服务和高性能存储等3大类产品,其中,算力集群可充分满足用户弹性算力的需求;裸金属服务为用户提供了最佳的性能输出,且允许用户根据需求进行定制。平台在计算节点之间以及计算节点与存储节点之间均采用IB网络,同时,平台提供高并发、高性能的存储服务,避免了网络及存储性能瓶颈,使算力节点性能最充分发挥。
2.1 提供的服务
2.1.1 AI训练
提供丰富的用于AI训练的计算资源及训练软件,使得用户可以快速构建、训练和部署自己的人工智能模型。平台支持TensorFlow、PyTorch、Caffe等主流工具和框架,帮助用户构建和训练各种类型的人工智能模型,如图像识别、语音识别、自然语言处理等。
2.1.2 AI推理
基于高性能算力集群为用户AI推理服务提供强大的算力支持,为AI推理服务的部署和发布提供便利的工具支持。具有针对AIGC、图像识别、语音识别、自然语言处理等多种应用场景的解决方案。
2.1.3 高性能计算
基于高性能的CPU/GPU服务器计算集群,提供强大的计算能力、高速的网络连接和大规模的存储资源,帮助用户完成大规模的计算和数据处理任务。高性能计算服务适用于需要大量计算能力的科学研究、工程仿真、药物研发及数字媒体等领域。
2.1.4 图像/视频渲染
通过CPU/GPU集群提供针对特效制作、影视动画、建筑效果图等场景的离线算力服务;通过高性能GPU服务器提供的实时渲染服务可用于直播渲染、游戏娱乐、产品展示等场景。高性能的算力平台显著缩短了图像/视频渲染所需的时长,并基于优化的算法提供大吞吐量的高效实时渲染。
2.1.5 定制化部署
根据用户需求提供从方案设计、部署实施,到日常运维、系统优化等全流程的服务。
2.2 支持的GPU
显卡 | 显存-GB | 内存-GB/卡 | CPU-核心/卡 | 存储 | 简介 |
---|---|---|---|---|---|
RTX 4090 | 24 | 60 | 11 | 100G系统盘 50G数据盘 | 性价比配置,推荐入门用户选择,适合模型推理场景 |
RTX 4090 | 24 | 124 | 15 | 100G系统盘 50G数据盘 | 性价比配置,推荐入门用户与专业用户选择,适合模型推理场景 |
H800 SXM | 80 | 252 | 27 | 100G系统盘 50G数据盘 | 顶级配置,推荐专业用户选择,适合模型训练与模型推理场景 |
H800 PCle | 80 | 124 | 21 | 100G系统盘 50G数据盘 | 顶级配置,推荐专业用户选择,适合模型训练与模型推理场景 |
L40S | 48 | 124 | 21 | 100G系统盘 50G数据盘 | 专业级配置,推荐专业用户选择,适合模型训练与模型推理场景 |
P40 | 24 | 12 | 6 | 100G系统盘 50G数据盘 | 性价比配置,推荐入门用户选择,适合模型推理场景 |
三、在DAMODEL部署LLama3.1
3.1 在DAMODEL创建实例(装系统部署环境)
创建实例前需要注册账号,注册地址:DAMODEL(丹摩智算)
注册成功后进入DAMODEL控制台,点击资源-GPU云实例 –> 点击创建实例:
进入创建页面后,首先在实例配置中选择付费类型,一般短期需求可以选择按量付费或者包日,长期需求可以选择包月套餐;
其次选择GPU数量和需求的GPU型号,首次创建实例推荐选择:
按量付费–GPU数量1–NVIDIA-GeForc-RTX-4090,该配置为60GB内存,24GB的显存(本次测试的LLaMA3.1 8B 版本至少需要GPU显存16G)
接下来配置数据硬盘的大小,每个实例默认附带了50GB的数据硬盘,首次创建可以就选择默认大小50GB
继续选择安装的镜像,平台提供了一些基础镜像供快速启动,镜像中安装了对应的基础环境和框架,可通过勾选来筛选框架,这里筛选PyTorch,选择PyTorch 2.4.0。
为保证安全登录,创建密钥对,输入自定义的名称,然后选择自动创建并将创建好的私钥保存的自己电脑中并将后缀改为.pem,以便后续本地连接使用。
创建好密钥对后,选择刚刚创建好的密钥对,并点击立即创建,等待一段时间后即可启动成功!
3.2 在DAMODEL部署LLama3.1 8B
等待实例创建成功,在 GPU云实例 中查看实例信息:
3.2.1 登录实例
有多种方法登录:
3.2.1.1 平台内置JupyterLab
平台提供了在线访问实例的 JupyterLab 入口,可以直接登录实例:
JupyterLab 界面:
登录后一般会在 /root/workspace 目录下,服务器各个路径具体意义如下:
/
:系统盘,替换镜像,重置系统时系统盘数据都会重置。/root/workspace
:数据盘,支持扩容,保存镜像时此处数据不会重置。/root/shared-storage
:共享文件存储,可跨实例存储。
3.2.1.2 SSH登录
SSH只是登录方式,工具可以是系统自带终端、Xshell、MobaXterm等。
SSH登录一般需要以下 4 个信息:
- 用户名:root
- 远程主机域名或IP(这里使用host域名):实例页面获取
- 端口号:实例页面获取
- 登录密码或密钥(这里使用密钥):前面创建实例时保存到本地的密钥
在实例页面获取主机host和端口号:
复制结果类似如下:
ssh -p 31729 root@gpu-s277r6fyqd.ssh.damodel.com
其中,gpu-s277r6fyqd.ssh.damodel.com
即主机host,31729
为端口号。
如果在终端登录,使用如下指令:
指令格式:ssh -i <私钥文件名> -p <端口号> <用户名>@<host地址>
示例:ssh -i private_key.pem -p 31729 root@gpu-s277r6fyqd.ssh.damodel.com
如果通过其他工具连接,输入对应信息即可,以 MobaXterm 为例:
首先打开MobaXterm软件,点击左上方Session按钮创建一个新的Session,并选择通过SSH连接登录。
然后将刚刚记录的主机host填入 Remote host
当中,端口号填入 Port
中,
在下方的 Adavanced SSH settings
中勾选 Use private key
,并将前面创建实例时保存到本地的密钥导入其中。
点击ok后,即可看到成功创建了session,输入刚刚记录的用户名root,回车即可连接成功。
显示如下界面后,即连接成功,后续就可以正常通过MobaXterm连接使用服务器了。
3.2.2 部署LLama3.1
我们使用 conda
管理环境,DAMODEL示例已经默认安装了 conda 24.5.0
,直接创建环境即可:
conda create -n llama3 python=3.12
环境创建好后,使用如下命令切换到新创建的环境:
conda activate llama3
继续安装部署LLama3.1需要的依赖:
pip install modelscope==1.11.0
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
模型,新建 model_download.py
文件并在其中输入以下内容,并运行 python model_download.py
执行下载。
import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import osmodel_dir = snapshot_download('LLM-Research/Meta-Llama-3.1-8B-Instruct', cache_dir='/root/workspace/model', revision='master')
模型一共大约 30G,网速慢的话需要等很长时间,不过DAMODEL平台的网速还是不错的。
模型下载好后,准备加载模型及启动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/model/LLM-Research/Meta-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 127.0.0.1 --server.port 1024
可以直接运行该指令,也可以将该指令保存在shell脚本里,运行后提示输入邮箱,可不输入直接回车:
回车后,结果如下,即启动成功:
由于云平台服务器没有浏览器,需要在本地访问。
3.3.3 在Web端使用LLama模型推理
由于服务器启动的是localhost IP,不是公网IP,所以本地无法直接访问,需要做一下转发。
使用 MobaXterm 建立ssh隧道,实现远程端到本机端的转发,打开 Tunneling
,点击 New SSH tunnel
,
编辑转发信息,点击 Local port dorwarding
弹出配置页面,其中各部分信息说明如下:
点击 Save
保存配置如下,检查配置无误后点击这个小钥匙,加载上面保存的密钥文件。
然后点击启动按钮,点击后,启动按钮变灰,旁边的停止按钮变亮,表示启动成功。
此时在浏览器中访问 http://127.0.0.1:1024
,即可打开LLaMA3.1 Chatbot交互界面,并与其对话:
四、总结
体验 DAMODEL(丹摩智算) 后,整体感觉它是一个非常强大且易用的AI开发云算力平台。对初学者非常友好,新建的实例基本不用再手动部署环境,一些常用的依赖已经帮你安装好,直接上手开发。
不仅如此,它还提供了多种不同的开发环境,可以轻松地选择最熟悉或最适合用户需求的环境来构建、训练和部署应用程序,而无需考虑配置的问题。
总的来说,和现有平台相比, DAMODEL(丹摩智算) 核心在于快速启动,便捷开发,非常适合和各个应用领域结合,快速提供相关的解决方案。
五、粉丝福利 - 丹摩低价狂欢节
点击 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 注册链接 ~~~~~~~~~~~~~~~~~~~~~~~~~~
可享受免费试用,实名认证后还可获得30元代金券。
🔥全场折扣价
全场6折起,部分GPU型号最低0.3元/卡/时。
🔥H800资源扩容
H800算力全新升级,资源扩容!保障用户使用需求,无需排队等待。
相关文章:

[大模型实战] DAMODEL云算力平台部署LLama3.1大语言模型
[大模型实战] DAMODEL云算力平台部署LLama3.1大语言模型 目录 一、LLama3.1二、DAMODEL云算力平台2.1 提供的服务2.1.1 AI训练2.1.2 AI推理2.1.3 高性能计算2.1.4 图像/视频渲染2.1.5 定制化部署 2.2 支持的GPU 三、在DAMODEL部署LLama3.13.1 在DAMODEL创建实例&…...

驱动开发系列09 - Linux设备模型之设备,驱动和总线
一:概述 Linux 设备模型(LDM)是 Linux 内核中引入的一个概念。用于管理内核对象(那些需要引用计数的对象、例如文件、设备、总线甚至驱动程序),以及描述它们之间的层次结构,以及这些内核对象之间绑定关系。Linux 设备模型引入了对象生命周期管理、引用计数、以及面向对象…...

HTML实现弹出层
leopard/ˈlepərd/ 豹子,豹纹 弹出层指的是鼠标悬停于某个元素之上时显示的一个界面组件。 关注和理解特性:z-index属性和动态生成HTML元素。 HTML5新增: figure:媒体内容(图像,音频,视频),用于包含一…...

Android控件详解
在Android应用程序中,界面由布局和组件组成。布局相当于框架,而控件则是框架里面的内容。了解过Android布局后,如果要设计ui界面,还需要了解和掌握各个控件的应用。 一个界面的设计,先从创建容器开始,再向…...

记忆化搜索专题篇
目录 斐波那契数 不同路径 最长递增子序列 猜数字大小II 矩阵中的最长递增路径 声明:下面将主要使用递归记忆化搜索来解决问题!!! 斐波那契数 题目 思路 斐波那契数的特点就是除了第一个数是0,第二个数是1&…...

入网测评检查项大全(安全资料)
1. Linux操作系统 2. Windows操作系统 3. Tomcat中间件 4. Nginx中间件 5. Mysql数据库 6. Weblogic中间件 7. Oracle数据库 8. Redis数据库 9. 达梦数据库 10. 应用系统 11. 渗透测试 13 .AIX操作系统 14 .中创中间件 15 .IIS中间件 16 .Apache中间件 17 .Mari…...

uni-app 开发App时调用uni-push 实现在线系统消息推送通知 保姆教程
一、引言 在开发App时避免不了需要推送系统通知,以提高用户的使用体验。在自己的一个工具型的小app上全流程接入了uni-push2.0的推送能力,做个记录,以防后期需要用到。在阅读本教程前最好先看看官方文档,结合官方文档使用…...

13.StringRedisTemplete使用
上一篇说到改变了RedisTemplate的默认序列化器后,在redis中存入Java对象后,在redis中的呈现是:会记录类的字节码 这也是代码中可以强制装换为对应的java对象的原因: Test void testStudent() {redisTemplate.opsForValue().set(&q…...

[工具]-gitee+pycharm-配置
安装git 查看git是否安装设置成功: git config user.name git config user.email 码云账号设置邮箱 pycharm设置gitee 打开 PyCharm,在 Settings - Plugins 里面,搜索 Gitee 插件,安装后重启 PyCharm。 pychar…...

中间件是一种在客户端和服务器之间进行通信和处理的软件组件或服务
中间件是一种在客户端和服务器之间进行通信和处理的软件组件或服务。中间件位于应用程序和操作系统之间,可以提供一些功能,如请求转发、数据转换、安全性和身份验证、日志记录等。 中间件的主要作用是将应用程序与底层基础设施解耦,提供了一…...

RCE-eval长度限制突破技巧
目录 一、长度17的限制绕过 1、最简单的绕过 (一)绕过 (二)编写一句话木马 2、文件包含的利用 (一)远程文件包含的利用 (二)本地文件包含的利用 3、usort绕过 (…...

【黑马】MyBatis
目录 MyBatis简介JDBC缺点:MyBatis针对于JDBC进行简化,简化思路: MyBatis快速入门具体构建步骤解决SQL映射文件的警告提示 Mapper代理开发案例:使用Mapper代理方式完成案例具体步骤详解:Mapper代理方式 Mapper核心配置…...

oracle创建dblink使得数据库A能够访问数据库B表LMEAS_MFG_FM的数据
1、给数据库A普通用户CMRONLINE相应的权限,在sys用户下执行以下语句 GRANT CREATE DATABASE LINK TO CMRONLINE; GRANT DROP PUBLIC DATABASE LINK TO CMRONLINE; GRANT CREATE PUBLIC DATABASE LINK TO CMRONLINE; 2、在数据库A用户 CMRONLINE下执行创建语句&…...

git config 如何配置用户账户
Git配置用户账户主要涉及设置用户名和邮箱地址,这是Git进行版本控制时用于标识提交者身份的重要信息。以下是如何配置Git用户账户的详细步骤: 1. 打开命令行工具 首先,需要打开命令行工具(如CMD、Terminal或Git Bash等ÿ…...

SpringBoot基础(二):配置文件详解
SpringBoot基础系列文章 SpringBoot基础(一):快速入门 SpringBoot基础(二):配置文件详解 目录 一、配置文件分类二、配置文件优先级1、不同版本优先级2、不同位置优先级 三、配置文件格式1、yml和yaml格式1.1、字符串1.2、布尔类型1.3、整数型1.4、浮点…...

Web安全(一)-靶场搭建过程-基于docker
今天来复习一下web方面的知识 1.1 sqliab环境搭建 基于Centos 和Docker 1.1.1 Vmware环境安装 这个就略去了吧 博主使用的是vmware17pro 具体的密钥什么的大家懂的都懂 这里就不提供了 接下来 将带大家安装centos7的镜像 为了方便操作 这里选择 centos7_minimal 地址如下:…...

【JavaEE】单例模式和阻塞队列
🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🕯️一.设计模式 在Java中,设计模式(Design Patterns)是指在软件工程和面向对象编程中,针对特定…...

RCE绕过技巧
目录 EVAL长度限制突破技巧 1.使用反引号 2.file_put_contents写入文件 3.php5.6变长参数usort回调后门 命令长度限制突破技巧 1.拼接文件名 无字母数字的webshell命令执行 1.取反码 2.上传临时文件 EVAL长度限制突破技巧 分析代码:首先传递一个param参数&…...

Spring源码解析(31)之事务配置文件解析以及核心对象创建过程
一、前言 首先我们先准备一下spring 事务的配置文件,具体内容如下: <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/20…...

win11安装docker报错记录
报错一: Docker Desktop - Unexpected WSL error An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or reboot your machine. You can also try reinstalling WSL and/or Docker Desktop. If t…...

【vulnhub】CLAMP 1.0.1靶机
信息收集 靶机发现 端口扫描 页面访问,并查看源码 访问 /nt4stopc/,下面有一些问题,提示必须收集答案 一些判断题,对与错对应1与0,最后结果为0110111001,拼接访问 点击图中位置,发现存在参数,p…...

GPS跟踪环路MATLAB之——数字锁相环
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 GPS跟踪环路MATLAB之——数字锁相环 前言为什么要锁相环科斯塔斯环锁相环的一些基本概念1、捕获、锁定与跟踪的概念2、捕获时间和稳态相差3、相位捕获和频率捕获4、捕获带和同…...

docker开发环境搭建-关于数据库的IP是什么
故事的背景是这样的: 我在本地的ubuntu系统上安装了docker,并创建了一个mysql容器,但是在使用DBeaver连接该数据库时,需要填写数据库的ip,填写127.0.0.1,工具提示找不到这个库,然后使用ip addr…...

loginApi
import request from "/utils/request"; import { AxiosPromise } from "axios"; import { CaptchaResult, LoginData, LoginResult } from "./types";/*** 登录API** param data {LoginData}* returns*/ export function loginApi(data: LoginD…...

【RAG检索增强生成】Ollama+AnythingLLM本地搭建RAG大模型私有知识库
目录 前言一、Ollama:革新性的本地LLM服务工具1.核心优势2.技术亮点 二、AnythingLLM 概览1.核心特性2.技术生态支持 三、搭建本地智能知识库1. Ollama的安装启航2. AnythingLLM的安装对接3. AnythingLLM的配置精调4. 工作区与文档管理5. 聊天与检索的智能交互 四、…...

【wiki知识库】08.添加用户登录功能--前端Vue部分修改
🍊 编程有易不绕弯,成长之路不孤单! 目录 🍊 编程有易不绕弯,成长之路不孤单! 一、今日目标 二、前端Vue模块的修改 2.1 the-header组件 2.2 store工具 2.3 router路由配置修改 一、今日目标 上篇文章…...

写给非机器学习人员的 embedding 入门
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...

Oracle【plsql编写九九乘法表】
九九乘法表 DECLAREi NUMBER : 1;j NUMBER : 1; BEGINFOR i IN 1 .. 9LOOPFOR j IN 1 .. iLOOPDBMS_OUTPUT.put (i || * || j || || i * j || );END LOOP;DBMS_OUTPUT.put_line ( );END LOOP; END;输出结果...

ansible安装K8s
部署Kubernetes (k8s) 集群使用Ansible是一个常见的自动化解决方案。下面我将提供一个基本的步骤概述和所需的命令,用于在CentOS 7.8上使用Ansible部署k8s集群,包括Master节点和Worker节点(Web和DB节点)。 步骤 1: 准备环境 确保所…...

restful传值
GetMapping 普通的get请求 后端: restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…...