【linux服务器】大语言模型实战教程:LLMS大模型快速部署到个人服务器


在这里插入图片描述

🎬 鸽芷咕:个人主页

 🔥 个人专栏: 《C++干货基地》《粉丝福利》

⛺️生活的理想,就是为了理想的生活!

引言

说到大语言模型相信大家都不会陌生,大型语言模型(LLMs)是人工智能文本处理的主要类型,也现在最流行的人工智能应用形态。ChatGPT就是是迄今为止最著名的使用LLM的工具,它由OpenAI的GPT模型的特别调整版本提供动力,而今天我们就来带大家体验一下部署大模型的实战。

文章目录

  • 引言
  • 一、项目选择与系统介绍
    • 1.1 项目介绍
    • 1.2 Tiny-Llama语言模型
    • 1.3 进入系统
    • 1.4 进行远程连接
  • 二、部署LLMS大模型
    • 2.1 拉取代码到环境
    • 2.2 自定义算子部署
      • 配置protoc 环境
      • 算子编译部署
      • 修改环境变量
      • 编译运行& 依赖安装
    • 2.3 推理启动
  • 三、 项目体验

一、项目选择与系统介绍

1.1 项目介绍

本来博主是准备来部署一下咱们的,清华大语言模型镜像这个目前也是非常的火啊,吸引了很多人的注意其优秀的性能和GPT3 不相上下,但是由于考虑到,大部分人电脑其实跑大模型是有一点点吃力的,为了让更多人来先迈出部署模型的第一步,于是就决定去 gitee 上找一个小型一点的大模型来实战一下。

1.2 Tiny-Llama语言模型

  • 果不其然刚搜索就发现 一个基于香橙派AI Pro 部署的语言大模型项目,这不正好吗?直接开始

在这里插入图片描述

  • 点进去一看发现这是南京大学开源的一套基于香橙派 AIpro部署的Tiny-Llama语言模型
  • (开源地址)

1.3 进入系统

这里我们选择的是openEuler,是香橙派的这块板子内置的系统。但其实他的内核是ubuntu这里可以给大家看一下,所以我们用 ubuntu 服务器来部署应该是没有问题的。

在这里插入图片描述

  • openEuler 是一由中国开源软件基金会主导,以Linux稳定系统内核为基础,华为深度参与,面向服务器、桌面和嵌入式等的一个开源操作系统。

1.4 进行远程连接

  • 这里直接插电启动,默认用户名 HwHiAiUser、密码 Mind@123 当然root密码也是一样的

  • 这里我们进来之后可以直接选择链接WiFi 非常便捷

  • 当然这里大家在这里也可以选择云服务器远程实战

在这里插入图片描述

  • 然后我们打开命令窗查看IP , 由于系统默认支持ssh 远程连接,所以博主这里就直接采用 Sxhell 进行连接
  • 输入ip 选择 HwHiAiUser 登录 密码 Mind@123

在这里插入图片描述

二、部署LLMS大模型

2.1 拉取代码到环境

  • 先cd进入 cd ~/samples 目录
  • 之后直接利用git 拉取我们的项目,git 由于系统镜像自带的有就不用我们手动安装了

在这里插入图片描述

2.2 自定义算子部署

配置protoc 环境

  • 使用wget工具从指定的华为云链接下载 protobuf-all-3.13.0.tar.gz文件
wget  https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/tiny-llama/protobuf-all-3.13.0.tar.gz --no-check-certificate

在这里插入图片描述

  • 解压刚刚下载的文件
tar -zxvf protobuf-all-3.13.0.tar.gz

在这里插入图片描述

这里解压速度非常快,基本一秒就OK了

在这里插入图片描述

  • 进入 protobuf-3.13.0 文件夹中
cd protobuf-3.13.0

更新apt包管理器的软件包列表

apt-get update

在这里插入图片描述

  • 使用apt-get安装必要的构建工具,包括autoconf、automake和libtool,这些工具用于配置和构建开源项目
apt-get install autoconf automake libtool

在这里插入图片描述

  • 生成配置脚本 configure , 运行 ./configure 生成一个Makefile
./autogen.sh
./configure
  • 编译源代码,由于 香橙派 AIpro 是4核64位处理器+ AI处理器支持8个线程,我们我们可以大胆的使用4个并行进程进行编译,以加快编译速度。
  • 编译这里的时候大家就可以放松放松了大概只需要10几分钟就好了
make -j4

在这里插入图片描述

  • 将编译后的二进制文件和库文件安装到系统指定的位置
make install

在这里插入图片描述

  • 更新系统共享库缓存的工具,检查protoc 版本
sudo ldconfigprotoc --version

在这里插入图片描述

算子编译部署

  • 将当前工作目录切换到 tiny_llama

在这里插入图片描述

  • 设置了一个环境变量 ASCEND_PATH,并将其值设为 /usr/local/Ascend/ascend-toolkit/latest
  • export ASCEND_PATH=/usr/local/Ascend/ascend-toolkit/latest
    在这里插入图片描述
  • custom_op/matmul_integer_plugin.cc 文件复制到指定路径
cp custom_op/matmul_integer_plugin.cc $ASCEND_PATH/tools/msopgen/template/custom_operator_sample/DSL/Onnx/framework/onnx_plugin/
  • cd 进入 目标文件夹进行配置
cd $ASCEND_PATH/tools/msopgen/template/custom_operator_sample/DSL/Onnx

在这里插入图片描述

修改环境变量

  • 打开build.sh,找到下面四个环境变量,解开注释并修改如下:
#命令为 vim build.sh

在这里插入图片描述

# 修改内容为
export ASCEND_TENSOR_COMPILER_INCLUDE=/usr/local/Ascend/ascend-toolkit/latest/include
export TOOLCHAIN_DIR=/usr
export AICPU_KERNEL_TARGET=cust_aicpu_kernels
export AICPU_SOC_VERSION=Ascend310B4

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

编译运行& 依赖安装

  • 编译构建项目,进入到构建输出目录以后续处理生成的文
./build.sh
cd build_out/

在这里插入图片描述

  • 生成文件到 customize 到默认目录 $ASCEND_PATH/opp/vendors/
./custom_opp_ubuntu_aarch64.run
  • 删除冗余文件
cd $ASCEND_PATH/opp/vendors/customize
rm -rf op_impl/ op_proto/

在这里插入图片描述

  • 安装依赖:从指定的华为云 PyPI 镜像源安装所需的 Python 包
cd tiny_llama/inference
pip install -r requirements.txt -i https://mirrors.huaweicloud.com/repository/pypi/simple
  • 先cd 回到根目录,在进入家目录,找到咱们的 tiny_llama/inference
    在这里插入图片描述

2.3 推理启动

  • 下载tokenizer文件
cd tokenizer
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/tiny-llama/tokenizer.zip
unzip tokenizer.zip   

在这里插入图片描述

  • 获取onnx模型文件
cd ../model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/tiny-llama/tiny-llama.onnx
  • 我们在复制代码的时候一定要仔细嗷博主这里少打了一个w 导致并没有获取到模型,后期找了半天才发现错误所以提醒大家一定要注意好每一步
    在这里插入图片描述

  • atc模型转换

atc --framework=5 --model="./tiny-llama.onnx"  --output="tiny-llama" --input_format=ND --input_shape="input_ids:1,1;attention_mask:1,1025;position_ids:1,1;past_key_values:22,2,1,4,1024,64" --soc_version=Ascend310B4 --precision_mode=must_keep_origin_dtype

在这里插入图片描述

三、 项目体验

好了到这里我们就算是大功告成了,只需要启动一下mian文件就OK了

  • cd tiny_llama/inference 目录下运行命令
python3 main.py

在这里插入图片描述

  • 打开网址进行访问

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

Tiny-Llama这个模型由于尺寸非常小,参数也只有1.1B。所以在我们部署Tiny-Llama这个大语言模型推理过程中,Ai Core的占用率只到60%左右,基本是一秒俩个词左右,速度上是肯定没问题的。后期可以去试试升级一下内存去跑一下当下主流的 千问7B模型 或者 清华第二代大模型拥有 60 亿参数 ChatGLM2 感觉用 OrangePi AIpro 这块板子也是没问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】线性表与顺序表

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

【算法】分布式共识Paxos

一、引言 在分布式系统中,一致性是至关重要的一个问题。Paxos算法是由莱斯利兰伯特(Leslie Lamport)在1990年提出的一种解决分布式系统中一致性问题的算法。 二、算法原理 Paxos算法的目标是让一个分布式系统中的多个节点就某个值达成一致。算…

【Django】前端技术-网页样式表CSS

文章目录 一、申明规则CSS的导入方式行内样式内部样式外部样式 二、CSS的选择器1. 基本选择器标签选择器: 选择一类标签 标签{}类选择器 class: 选择所有class属性一致的表情,跨标签.类名{}ID选择器:全局唯一 #id名{} 2.层次选择器…

束搜索(与贪心、穷举对比)

一、贪心搜索 1、基于贪心搜索从Y中找到具有最高条件概率的词元,但贪心可能不是最优解 2、比如 (1)贪心:.5*.4*.2*.1.0024 (2)另外:.5*.3*.6*.6.0054 二、穷举搜索 (1&#xff0…

Transformer中的Multi-head Attention机制解析——从单一到多元的关注效益最大化

Transformer中的Multi-head Attention机制解析——从单一到多元的关注效益最大化 Multi-head Attention的核心作用 组件/步骤描述多头注意力机制(Multi-head Attention)Transformer模型中的关键组件,用于处理序列数据功能允许模型同时关注到…

数据库 执行sql添加删除字段

添加字段: ALTER TABLE 表明 ADD COLUMN 字段名 类型 DEFAULT NULL COMMENT 注释 AFTER 哪个字段后面; 效果: 删除字段: ALTER TABLE 表明 DROP COLUMN 字段;

科普文:分布式架构中的三高:高并发、高性能、高可用

关于高并发 高并发场景 互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻 辑,转变为如何满足大量用户的高并发访问请求。 一个简单的计算处理过程,如果一旦面对大量的用户访问,整个技术挑战就…

人工智能类——计算机科学与技术

计算机科学与技术是一个非常大的门类。目前计算机科学与技术类招生的专业主要有计算机科学与技术、软件工程、网络工程、信息安全、物联网工程等,后面的几个专业是计算机科学与技术的重要分支,而这个门类的其他分支并没有单列出来一个本科专业&#xff0…

leetcode热题系列章节11

378. 有序矩阵中第K小的元素 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。 请注意,它是排序后的第k小元素,而不是第k个元素。 示例: matrix [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15] ], k …

【数据结构】顺序表(c语言实现)(附源码)

​ 🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 1.顺序表的概念与结构 2.顺序表的分类 3.顺序表的实现 3.1 结构定义及方法的声明 3.2 方法的实现 3.2.1 初始化 3.2.2 销毁 3.2…

Nvidia GPU驱动安装报错显卡与驱动不兼容(本身兼容)

最近在公司服务器上遇到了一个特别离谱的问题,就是在本身在nividia官网上面下载的匹配的显卡驱动,安装之后采用下面命令查看驱动显示: $ nvidia-smiNVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make su…

web服务器搭建练习

练习要求: 搭建一个web服务器,客户端通过www.haha.com访问该网站时能够看到内容:this is haha 完成过程: 1. 创建新ip,重启ens [rootlocalhost ~]# nmtui [rootlocalhost ~]# nmcli connection up ens1602.创建目录&#xff0…

Java面试八股之Spring boot的自动配置原理

Spring boot的自动配置原理 Spring Boot 的自动配置原理是其最吸引人的特性之一,它大大简化了基于 Spring 框架的应用程序开发。以下是 Spring Boot 自动配置的基本原理和工作流程: 1. 启动类上的注解 Spring Boot 应用通常会在主类上使用 SpringBoot…

微信支付v3

查看证书序列号 引用&#xff1a;https://wechatpay-api.gitbook.io/wechatpay-api-v3/chang-jian-wen-ti/zheng-shu-xiang-guan https://myssl.com/cert_decode.html # 查看证书序列号openssl x509 -in apiclient_cert.pem -noout -serial 微信支付java <dependency>…

sql-libs通关详解

1-4关 1.第一关 我们输入?id1 看回显&#xff0c;通过回显来判断是否存在注入&#xff0c;以及用什么方式进行注入&#xff0c;直接上图 可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显&#xff0c;所以我们可以使用联合查询。联合查询原理简单说一下&…

中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?

你是一个程序员&#xff0c;你用代码写了一个博客应用服务&#xff0c;并将它部署在了云平台上。 但应用服务太过受欢迎&#xff0c;访问量太大&#xff0c;经常会挂。 所以你用了一些工具自动重启挂掉的应用服务&#xff0c;并且将应用服务部署在了好几个服务器上&#xff0c;…

自动驾驶-机器人-slam-定位面经和面试知识系列06之C++STL面试题(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客&#xff08;某些文章上会附上内推码&#xff09;也会同步更新&a…

达梦数据库激活

SSH登录 192.168.0.148 账号&#xff1a;root 密码&#xff1a;xxx 1.上传 dm.key 文件到安装目录 /bin 目录下 cd /home/dmdba/dmdbms/bin rz -E dm.key2.修改 dm.key 文件权限 chown -R dmdba.dinstall dm.key3.打开数据库工具&#xff0c;新建查询&#xff0c;输入 cd /…

Macbook - MacOS14连接WIFI但无法打开部门网页或应用

现象&#xff1a; 遇到MacBook部分网页可以打开&#xff0c;部分网页不行。包括应用也是同个现象&#xff0c;重启路由器连接手机热点也无法解决。 解决方案&#xff1a; 系统设置/网络/位置&#xff0c;默认是【自动】&#xff0c;添加并选择新的位置即可解决。&#xff08;具…

实验2-1-5 输出带框文字

#include<stdio.h> int main(){printf("************\n");printf(" Welcome \n");printf("************\n");}