上篇文章简单写了一下使用ollama本地部署deepseek,有很多非计算机相关专业的朋友也想折腾,并且遇到了不少问题,因此本篇写了通过其他方式进行模型的部署的指南,也能解决一部分问题。
文章写的仓促,加上本来就没有美工功底,没有排版,各位大佬凑合看下内容,如有不当之处请批评指正(手动狗头)
收到反馈较多的问题主要为:ollama的下载速度慢、使用过程中出现OOM error、ollama出现网络错误等。在写这篇文章时,上述问题都没有遇到,所以应该算是解决了。先科普一个平台https://huggingface.co
这是一个开源平台,专注于开发和分享自然语言处理(NLP)及相关领域的工具和模型,同时也覆盖了计算机视觉、语音处理等更多AI方向。以下是Hugging Face的主要功能和服务:
1.Transformers库 Hugging Face最著名的项目是Transformers库,这是一个开源的深度学习框架,支持数百种预训练的语言模型(如BERT、GPT-3、T5等)。这些模型可以用于自然语言处理任务,如: 文本分类情感分析机器翻译文本生成(如聊天机器人)语义搜索等几乎所有主流的深度学习框架都可以搭配使用,如PyTorch和TensorFlow。
2.模型共享平台Hugging Face提供了一个模型共享平台,任何人都可以在https://huggingface.co/models上:发布自己的AI模型。 下载他人提供的预训练模型。直接通过API调用这些模型进行推理。 目前平台上有几千种开源模型,支持多种语言、任务和应用场景。
3.Dataset库 Hugging Face还提供了一个庞大的数据集库,支持研究人员和开发者下载和使用各种任务的数据集,例如: 文本分类数据集机器翻译数据集对话系统数据集自然语言理解(NLU)相关的数据集 链接:https://huggingface.co/datasets
4.Hub服务 “Hub”是一个类似于GitHub的AI模型与数据存储和协作平台,支持团队开发和共享机器学习资源。包括: 模型托管:免费发布和托管AI模型。 版本控制:支持模型和数据集的版本管理。社区互动:通过评论或点赞与社区交流。
5.推理和API服务 Hugging Face提供了强大的API服务,允许用户直接调用模型进行推断。无需自己训练或部署模型,只需通过API即可运行: 自然语言生成文本情感分析问答系统等
6.Spaces:低代码应用开发 Hugging Face推出了Spaces,这是一个支持用户快速构建和分享机器学习应用的工具。基于Gradio或Streamlit,用户可以用低代码或无代码的方式创建交互式Web应用。
7.教程和社区Hugging Face也非常注重教育和社区活动,提供大量的教程、文档和案例研究,帮助开发者快速上手。此外,他们还经常举办研讨会、竞赛和其他社区活动。
再科普一个知识,GGUF,GGUF 格式的全名为(GPT-Generated Unified Format),提到 GGUF 就不得不提到它的前身 GGML(GPT-Generated Model Language)。GGML 是专门为了机器学习设计的张量库,最早可以追溯到 2022/10。其目的是为了有一个单文件共享的格式,并且易于在不同架构的 GPU 和 CPU 上进行推理。但在后续的开发中,遇到了灵活性不足、相容性及难以维护的问题。在传统的深度学习模型开发中,PyTorch常被用来构建模型,但在部署阶段常遇到依赖库过多和版本管理复杂的问题。因此,社区开发了更轻量的模型格式,如GGML、GGMF、GGJT等。经过持续迭代,最终诞生了更强大的GGUF格式。GGUF的优势:可扩展性:可以轻松为工具或模型添加新功能,同时保持与现有模型的兼容性。支持内存映射(mmap):通过mmap技术实现模型的快速加载与存储。简单易用:无需额外依赖库,少量代码即可完成加载,且支持多种编程语言。信息完整:模型文件自带所有必要信息,不需额外配置文件。支持量化:兼容4位、8位和F16量化格式,降低显存需求,节省GPU成本。由于现在已经发布了gguf版本的模型,因此不用自己去转换也可以,如果想节省时间的建议直接访问https://modelscope.cn/models/second-state/Qwen2.5-0.5B-Instruct-GGUF/summary下载gguf模型,如果和我一样想自己折腾一下,就按照后面步骤继续配置实现对一个模型hf版的下载,再进行本地化的部署。首先从HuggingFace下载模型,确保机器上已经安装了python(3.8+版本)并添加至环境变量
pip install huggingface_hub
编写以下python脚本,命名为dw.py
from huggingface_hub import snapshot_download
model_id="Qwen/Qwen2.5-0.5B-Instruct"
snapshot_download(repo_id=model_id, local_dir="qwen2.5_0.5b_instruct",
local_dir_use_symlinks=False, revision="main")
运行后即开始了模型的下载,此处选用0.5b的通义千问大模型以提升速度,同理也可以使用别的大模型
接下来开始格式转换,从github获取一个工具llama.cpp
https://github.com/ggerganov/llama.cpp写文章的时候发现2小时前刚刚发布了最新版,就直接用最新的release
下载完源码后首先安装python依赖,由于很多库需要新版本的python特性,因此使用的python3.11环境进行配置
安装完成后先执行一下convert_hf_to_gguf.py看看有没有啥问题
python llama.cpp-b4651convert_hf_to_gguf.py qwen2.5_0.5b_instruct --outtype f16 --verbose--outfile qwen2.5_0.5b_instruct_f16.gguf
这里--outtype是输出类型,代表含义: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:这些提供了最高的精度,但是因为高资源消耗和慢速度,可能不适合所有用户。fp16 和 f32: 不量化,保留原始精度。然后就可以使用ollama进行运行了,但是运行前还需要进行一个模板配置,保存成ModelFile文件(记得替换具体的文件路径)
FROM [文件路径]qwen2.5_0.5b_instruct_f16.gguf
# set the temperature to0.7 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>"""
# set the system message
SYSTEM """
You are a helpful assistant.
"""
ollama create qwen2.5_0.5b_instruct --file .ModelFile
内网漫游
攻守切磋如对拳
扫码获取更多精彩
出招全靠脑回路
原文始发于微信公众号(魔影安全实验室):大模型手工部署指南
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论