AI资讯
掌握人工智能AI动态,领略未来风采!
一、前言
llama.cpp,一种简单而高效的工具,将训练好的模型转换为可在CPU上运行的版本,以加快推理速度并减少内存使用。
llama.cpp 是 Ollama、LMStudio 和其他很多热门项目的底层实现,也是 GPUStack 所支持的推理引擎之一,它提供了 GGUF 模型文件格式。
GGUF (General Gaussian U-Net Format) 是一种用于存储模型以进行推理的文件格式,旨在针对推理进行优化,可以快速加载和运行模型。
llama.cpp 还支持量化模型,在保持较高的模型精度的同时,减少模型的存储和计算需求,使大模型能够在桌面端、嵌入式设备和资源受限的环境中高效部署,并提高推理速度。
今天带来一篇介绍如何制作并量化 GGUF 模型,将模型通过Ollama安装使用的操作教程。
二、操作
1、安装 conda 环境
如果是安卓端这里安装 ARM64 架构 conda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh -b
有些安卓平板可以会出现“"$CONDA_EXEC" constructor --prefix "$PREFIX" --extract-conda-pkgs”
可以改安装 Miniforge3:各版本下载链接集合:https://conda-forge.org/miniforge/ 注意选择 aarch64
wget https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Miniforge3-24.1.2-0-Linux-aarch64.sh
bash Miniforge3-24.1.2-0-Linux-aarch64.sh -b
如果是服务器端这里安装 conda
cd /home/malata/Downloads
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b然后执行:
/root/miniconda3/bin/conda init (例如:/home/malata/miniconda3/bin/conda init)
(注意 conda 的安装路径)
然后输入:bash
出现如:(base)root@localhost: 表示 OK;
备注:conda deactivate 这条命令会退出当前激活的 Conda 环境,包括 base 环境。
#设置安装源为国内
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
2、安装llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp/
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
brew install cmake
make
./llama-quantize --help
3、下载原始模型
#从 HuggingFace 下载模型,通过 HuggingFace 提供的 huggingface-cli 命令下载,首先安装依赖:
pip install -U huggingface_hub
#设置下载国内镜像源:
export HF_ENDPOINT=https://hf-mirror.com
#这里下载 Qwen/Qwen2.5-1.5B-Instruct 模型,该模型需要认证,可以直接下载,如果需要下载认证模型,请参考教程:https://juejin.cn/post/7434201140294860826
mkdir ~/huggingface.co
cd ~/huggingface.co/
huggingface-cli download Qwen/Qwen2.5-1.5B-Instruct --local-dir Qwen2.5-1.5B-Instruct
#下载过程比较久,请耐心等待,下载完后,
4、创建 GGUF 格式与量化模型的脚本:
cd ~/huggingface.co/
vim quantize.sh
#填入以下脚本内容,并把 llama.cpp 和 huggingface.co 的目录路径修改为当前环境的实际路径,需要为绝对路径
#!/usr/bin/env bash
llama_cpp="/home/malata/Ollama/llama.cpp"
b="/home/malata/huggingface.co"
export PATH="$PATH:${llama_cpp}"
s="$1"
n="$(echo "${s}" | cut -d'/' -f2)"
d="gpustack/${n}-GGUF"
# prepare
mkdir -p ${b}/${d} 1>/dev/null 2>&1
pushd ${b}/${d} 1>/dev/null 2>&1
git init . 1>/dev/null 2>&1
if [[ ! -f .gitattributes ]]; then
cp -f ${b}/${s}/.gitattributes . 1>/dev/null 2>&1 || true
echo "*.gguf filter=lfs diff=lfs merge=lfs -text" >> .gitattributes
fi
if [[ ! -d assets ]]; then
cp -rf ${b}/${s}/assets . 1>/dev/null 2>&1 || true
fi
if [[ ! -d images ]]; then
cp -rf ${b}/${s}/images . 1>/dev/null 2>&1 || true
fi
if [[ ! -d imgs ]]; then
cp -rf ${b}/${s}/imgs . 1>/dev/null 2>&1 || true
fi
if [[ ! -f README.md ]]; then
cp -f ${b}/${s}/README.md . 1>/dev/null 2>&1 || true
fi
set -e
pushd ${llama_cpp} 1>/dev/null 2>&1
# convert
[[ -f venv/bin/activate ]] && source venv/bin/activate
echo "#### convert_hf_to_gguf.py ${b}/${s} --outfile ${b}/${d}/${n}-FP16.gguf"
python3 convert_hf_to_gguf.py ${b}/${s} --outfile ${b}/${d}/${n}-FP16.gguf
# quantize
qs=(
"Q8_0"
"Q6_K"
"Q5_K_M"
"Q5_0"
"Q4_K_M"
"Q4_0"
"Q3_K"
"Q2_K"
)
for q in "${qs[@]}"; do
echo "#### llama-quantize ${b}/${d}/${n}-FP16.gguf ${b}/${d}/${n}-${q}.gguf ${q}"
llama-quantize ${b}/${d}/${n}-FP16.gguf ${b}/${d}/${n}-${q}.gguf ${q}
ls -lth ${b}/${d}
sleep 3
done
popd 1>/dev/null 2>&1
set +e
5、转换GGUF 模型
#将模型转换为 FP16 精度的 GGUF 模型,并分别用 Q8_0、Q6_K、Q5_K_M、Q5_0、Q4_K_M、Q4_0、Q3_K、Q2_K 方法来量化模型:
bash quantize.sh Qwen2.5-1.5B-Instruct
#脚本执行完后,查看成功转换为 FP16 精度的 GGUF 模型和量化后的 GGUF 模型:
ll gpustack/Llama-3.2-3B-Instruct-GGUF/
6、安装Ollama:
#Ollama是一个命令行工具,可以在Linux上本地运行多种语言模型,包括Gemma。首先,你需要访问Ollama的官方网站或GitHub页面以获取安装指令和包。
curl -fsSL https://ollama.com/install.sh | sh (需要连接github,国内有时候可以,比较快)
#或者
curl -L -o install.sh https://ollama.com/install.sh
bash install.sh(需翻墙,比较慢)
#安装完成后,你可以通过运行以下命令来验证Ollama是否正确安装:
ollama --version
#出现版本号,安装成功
ollama version is 0.3.14
#Ollama常用命令:
ollama serve #启动ollama
ollama create #从模型文件创建模型
ollama show #显示模型信息
ollama run #运行模型
ollama pull #从注册表中拉取模型
ollama push #将模型推送到注册表
ollama list #列出模型
ollama cp #复制模型
ollama rm #删除模型
ollama help #获取有关任何命令的帮助信息
7、从ollama导入GGUF模型文件
cd ~/huggingface.co/
echo From gpustack/Qwen2.5-1.5B-Instruct-GGUF/Qwen2.5-1.5B-Instruct-Q4_K_M.gguf >Qwen2.5-1.5B-Instruct-Q4_K_M.modlefile
ollama create Qwen2.5-1.5B-Instruct-Q4_K_M -f Qwen2.5-1.5B-Instruct-Q4_K_M.modlefile
#执行成功将出现以下信息
transferring model data 100%
using existing layer sha256:5669c912f8ef5abf7e99bd50afa74ed0d14ce46bc9da5d681f64eb1312e3f673
creating new layer sha256:073cd096f2ecfb321ce0044a93c47ad6752718444b314662992ac186ffbf8c31
writing manifest
success
#运行模型
ollama run Qwen2.5-1.5B-Instruct-Q4_K_M
#将出现以下信息表示成功
>>> Send a message (/? for help)