在openEuler RISC-V上使用llama.cpp

1 目标

尝试在openEuler riscv上使用llama.cpp进行大模型推理

2 环境说明

  • 系统:openEuler 2403 riscv
  • cpu:SG2042
  • python:3.11

3 操作步骤

3.1 模型下载

创建并激活虚拟环境

$ python3 -m venv --site-system-packages venv
$ source venv/bin/activate

创建模型保存目录

$ mkdir models
方法一:从HuggingFace上下载模型

安装transformers库,默认会同时安装huggingface-hub

$ pip install transformers

下载模型

$ huggingface-cli download --resume-download meta-llama/Meta-Llama-3-8B-Instruct --local-dir ./models/Meta-Llama-3-8B-Instruct

可能会由于网络问题造成下载失败

方法二:从魔搭ModelScope上下载模型
$ pip install modelscope
$ modelscope download --model LLM-Research/Meta-Llama-3-8B-Instruct --local_dir ./models/Meta-Llama-3-8B-Instruct

下载成功且速度较快

3.2 llama.cpp使用

安装llama.cpp(C/C++环境)

$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp

CPU Build:
使用CMake构建llama.cpp:

$ cmake -B build
$ cmake --build build --config Release

Image

参考:Build llama.cpp locally

安装模型转换所需依赖

$ pip install -r requirements.txt

出现依赖问题

Image

源码编译pytorch 2.2.1,参考pytorch riscv源码编译文档,再次尝试安装依赖发现仍出现该问题,在llama.cpp/requirements/requirements-convert_hf_to_gguf.txtllama.cpp/requirements/requirements-convert_hf_to_gguf_update.txt两个文件中注释掉以下内容

torch~=2.2.1

再次尝试安装依赖即可安装成功

Image

转换HF模型为GGUF格式(FP16)

$ python convert_hf_to_gguf.py ../models/Meta-Llama-3-8B-Instruct

在SG2042上转换过程用时约为15分钟,转换成功后会在模型路径下生成一个.gguf文件

Image

转换后的文件大小约为16G

在这里插入图片描述

GGUF模型量化

# 量化命令格式
$ llama-quantize your_model.gguf res_model.gguf quantize_type 
# 示例: Q4_K_M 量化
$ ./build/bin/llama-quantize ../models/Meta-Llama-3-8B-Instruct/Meta-Llama-3-8B-Instruct-F16.gguf ../models/Meta-Llama-3-8B-Instruct/Meta-Llama-3-8B-Instruct-F16_q4km.gguf Q4_K_M

量化完成

Image

量化后模型大小约为4.6G

Image

模型部署,在CPU上运行llm模型推理

# CPU
$ ./build/bin/llama-cli -m ../models/Meta-Llama-3-8B-Instruct/Meta-Llama-3-8B-Instruct-F16_q4km.gguf -cnv -p "You are a helpful assistant"

参数说明:

  • -m:模型路径
  • -cnv:交互模式,将保留上下文,可以连续对话
  • -p:启动生成的提示信息

运行结果

Image

使用中文提示

Image

4 总结

在openEuler riscv上可以成功使用llama.cpp进行LLM模型转换、量化和推理。

5 参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值