登陆huggingface账户
pip install --upgrade huggingface_hub
huggingface-cli login
通过snapshot_download下载模型
from huggingface_hub import snapshot_download
snapshot_download(
repo_id="bigscience/bloom-560m",
local_dir="/data/user/test",
local_dir_use_symlinks=False,
proxies={"https": "http://localhost:7890"}
)
如果需要登陆token:
import huggingface_hub
huggingface_hub.login("HF_TOKEN") # token 从 https://huggingface.co/settings/tokens 获取
modelscope模型下载
#验证SDK token
from modelscope.hub.api import HubApi
api = HubApi()
api.login('xxxxxx')
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('xxx/Meta-Llama-3-8B')
hf格式转gguf
python convert-hf-to-gguf.py --model /workspace/models/Qwen/14B
gguf量化
./quantize models/Qwen/14B/ggml-model-f16.gguf q4_0 # q4_0代表进行INT4量化
典型的精度参考:
q2_k:特定張量 (Tensor) 采用較高的精度設置,而其他的則保持基礎級別。
q3_k_l、q3_k_m、q3_k_s:這些變體在不同張量上使用不同級別的精度,從而達到性能和效率的平衡。
q4_0:這是最初的量化方案,使用 4 位精度。
q4_1和q4_k_m、q4_k_s:這些提供了不同程度的準確性和推理速度,適合需要平衡資源使用的場景。
q5_0、q5_1、q5_k_m、q5_k_s:這些版本在保證更高準確度的同時,會使用更多的資源並且推理速度較慢。
q6_k和q8_0:這些提供了最高的精度,但是因為高資源消耗和慢速度,可能不適合所有用戶。
llama.cpp推理
# chat.sh
./main -m ./models/Qwen/14B/ggml-model-Q4_0.gguf -c 512 -b 1024 -n 256 --keep 48 \
--repeat_penalty 1.0 --color -i \
-r "User:" -f prompts/chat-with-bob.txt
执行命令:
sh examples/chat.sh
执行后,即可进入聊天界面
精度评测
llama.cpp提供了perplexity可执行文件来验证模型的PPL精度,这里以wikitext语料来简单测试一下千问14B的性能(通义千问可能更偏向于中文,wikitext-2多数都是英文语料)。需要先下载解压wikitext-2到本地,这里解压到了llama.cpp/wikitext-2-raw/目录下,运行以下命令:
./perplexity -m models/Qwen/14B/ggml-model-Q4_0.gguf -f wikitext-2-raw/wiki.test.raw
ollama导入gguf模型
创建一个名为Modelfile的文件,并在其中添加FROM指令,指定要导入的模型的本地文件路径。
FROM ./vicuna-33b.Q4_0.gguf
在Ollama中创建模型
ollama create example -f Modelfile
运行模型
ollama run example