引言
說到大語言模型相信大家都不會陌生,大型語言模型(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
這塊板子也是沒問題。