一、安装驱动
1、查看现在系统是否已经安装驱动:
1.1、首先查看操作系统:
uname -r # 显示内核版本
uname -a # 显示所有内核信息,包括机器类型、操作系统名称等
# 我的操作系统是基于Linux内核的麒麟系统
1.2、再查看驱动是否安装:nvidia-smi
发现驱动并没有安装,接下里就安装驱动
2、安装驱动:
参考我之前另一篇非常详细的驱动安装教程:https://blog.youkuaiyun.com/nfkjdx/article/details/136731327?spm=1001.2014.3001.5502 , 虽然安装教程是centos,但是步骤都是一样的
2.1、安装环境依赖:需要安装gcc与pciutils,gcc是用于编译源代码的编译器,而pciutils是用于管理和诊断PCI设备的工具集。这两个软件包在Linux系统中都具有重要的作用,gcc用于编译软件,pciutils用于管理系统硬件。安装命令如下:
yum -y install gcc pciutils
2.2、查看是否已经安装gcc:gcc --version
查看是否已经安装pciutils:lspci
2.3、查看内核版本和GPU
2.4、屏蔽系统自带的nouveau
Nouveau 是一个开源的图形驱动程序,用于支持 NVIDIA 显卡在 Linux 系统上的使用。它是由社区开发的,旨在提供对 NVIDIA 显卡的开源驱动支持,以便在 Linux 系统上实现图形加速和其他相关功能。
2.4.1、查看nouveau
lsmod | grep nouveau
2.4.2、打开dist-blacklist.conf文件,按i或insert键进入修改模式
vi /lib/modprobe.d/dist-blacklist.conf
2.4.3、将nvidiafb注释掉:
#blacklist nvidiafb
2.4.4、添加以下两句在blacklist.conf 文件中, :回到文件最底部,:w保存文件,:q退出文件
blacklist nouveau
options nouveau modeset=0
2.5、重建initramfs image步骤
2.5.1、删除
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
2.5.2、重建
dracut /boot/initramfs-$(uname -r).img $(uname -r)
2.6、修改运行级别为文本模式:systemctl set-default multi-user.target
2.7、重新启动服务器:reboot
2.8、下载安装源码包
2.8.1、查看源码包版本:rpm -qa | grep kernel
2.8.2、根据源码包版本,下载源码包devel与headers文件,我现在这边是4.19.90-89.11.v2401.ky10.x86_64:
devel地址:http://rpmfind.net/linux/rpm2html/search.php?query=kernel-devel
headers地址:http://rpmfind.net/linux/rpm2html/search.php?query=kernel-headers
注意:如果没有对应版本的,就下载高一个版本的也可以
2.8.3、安装下载的源码包:
rpm -ivh kernel-devel-5.14.0-427.13.1.el9_4.x86_64.rpm --nodeps --force
rpm -ivh kernel-rpm -ivh kernel-headers-3.10.0-1160.el7.x86_64.rpm --force
2.9、下载安装NVIDIA驱动程序:驱动下载地址:https://www.nvidia.cn/Download/index.aspx?lang=cn,
根据自己实际去下载驱动,下载完成后就进行安装:
2.9.1、授权命令:chmod +x NVIDIA-Linux-x86_64-560.35.03.run
2.9.2、执行文件./NVIDIA-Linux-x86_64-560.35.03.run
2.10、查看英伟达驱动是否安装成功:nvidia-smi
二、Anaconda环境搭建
参考我的另一篇文章:https://blog.youkuaiyun.com/nfkjdx/article/details/136370188?spm=1001.2014.3001.5502
1、下载linux版本的Anaconda
1.1、下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,
我选择下载:Anaconda3-2024.02-1-Linux-x86_64.sh
1.2、安装下载的Anaconda3-2024.02-1-Linux-x86_64.sh:
sh Anaconda3-2024.02-1-Linux-x86_64.sh
1.3、激活安装的Anaconda环境:source /root/anaconda3/bin/activate
2、创建虚拟环境
2.1、查看现有的虚拟环境:conda env list
2.2、创建新的虚拟环境:conda create --name openwebui python=3.11
2.3、激活创建的虚拟环境:source activate openwebui
2.4、查看创建的虚拟环境下安装的库/包:conda list
三、Ollama简介与安装
1、简介:
Ollama官网:https://ollama.com/
1.1、Ollama是一个开源的、可以在本地运行大型语言模型的工具。它允许用户在自己的设备上部署和运行语言模型,而不必完全依赖云端服务。这在数据隐私等方面有诸多优势,比如用户担心数据发送到云端会产生安全风险,使用Ollama就可以在本地处理数据。
1.2、核心特点
简单易用:通过命令行工具,用户可以快速下载、安装和运行模型,无需复杂的配置。
安全性:强调数据隐私和信息安全,确保企业机密不外泄。(Ollama 允许用户在本地机器上运行 LLMs,无需依赖云端服务,确保数据隐私和安全性。)
模型支持:支持多种流行的开源 LLMs,如 LLaMA、Mistral 等,并允许用户自定义和微调模型。
跨平台:支持 macOS 和 Linux 系统,方便不同平台的用户使用。
自然语言交互:通过对话式接口实现任务管理和信息查询。
知识整合:自动提取、整理和分析团队数据。
多模态支持:结合文本、语音和视觉数据,提供更全面的解决方案。
开源:Ollama 是开源项目,用户可以自由查看和修改代码,满足个性化需求。
还拥有标准化的 API,开发者可以轻松将 Ollama 集成到现有工具链中。
2、安装
2.1、进入官网,点击Download,选择安装的版本,在命令行里面运行:
curl -fsSL https://ollama.com/install.sh | sh
2.2、查看ollama是否安装好: ollama -v
2.3、设置开机自启动: sudo systemctl enable ollama
四、Ollama的使用
1、启动与停止服务
1、查看ollama服务状态:sudo systemctl status ollama
2、启动ollama服务:sudo systemctl start ollama
3、重启ollama服务:sudo systemctl restart ollama
4、停止ollama服务:sudo systemctl stop ollama
2、模型管理
1、查看已有模型:ollama list 或 ollama ls
2、显示某个模型具体信息:ollama show deepseek-r1:14b
3、拉取模型(官网内的models里面有ollama支持的模型):ollama pull deepseek-r1:70b
4、运行拉取的模型:ollama run deepseek-r1:70b
5、删除拉取的模型:ollama rm deepseek-r1:70b
6、推送模型到ollama里面:ollama push [模型名称]:将本地模型推送到模型注册表中,以便他人或其他系统使用。
7、复制模型:ollama cp [原模型名称] [新模型名称]:复制一个模型到另一个位置或给定名称的地方。
8、创建模型:ollama create [Modelfile路径]:使用包含模型信息的Modelfile来创建一个新模型。
9、退出会话:/bye:退出会话。这个命令将结束当前与模型的对话,并退出程序。
10、关闭某个模型的运行(关闭某个模型占用的资源):ollama stop deepseek-r1:14b
Ollama支持拉取的模型可以在官网里面查询:https://ollama.com/search
参考链接:
https://blog.youkuaiyun.com/mqiqe/article/details/145176029
https://www.cnblogs.com/hujunwei/p/18658780
五、Open WebUi简介与安装
1、简介
1.1、简介:Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线运行。它支持各种 LLM 运行器,如 Ollama 和 OpenAI 兼容的 API,并内置了 RAG 推理引擎,使其成为强大的 AI 部署解决方案。
1.2、目标:Open WebUI 的核心目标是为开发者提供一个快速、简单且高效的方式,将大模型技术与用户界面结合。无论是构建 AI 聊天机器人、智能搜索引擎,还是生成个性化推荐,Open WebUI 都能提供一个强大且易用的基础设施。
1.3、特点
1.3.1、简化开发流程:通过直观的界面组件和简洁的 API,开发者能够快速搭建用户界面,而不需要过多关注底层实现。
1.3.2、与大模型无缝集成:Open WebUI 提供了与大规模语言模型(如 GPT-3、GPT-4、BERT)的简单集成接口,帮助开发者实现自然语言处理、智能对话等功能。
1.3.3、高度自定义:Open WebUI 支持灵活的界面定制,开发者可以根据应用场景定制布局、交互模式及数据展示方式。
1.3.4、开源和可扩展:作为一个开源项目,Open WebUI 提供了清晰的文档和代码,开发者可以在此基础上进行扩展和二次开发,满足特定需求。
1.4、应用场景
1.4.1、 AI 聊天机器人:利用 Open WebUI 和大模型,可以快速构建智能聊天机器人。通过简化的界面和自定义交互方式,用户可以直接与 AI 系统对话,得到自然、流畅的回答。
1.4.2、 智能搜索引擎:结合 Open WebUI 和大模型,构建一个智能搜索引擎,通过自然语言查询帮助用户快速获得精确答案。这种系统能够理解复杂的查询意图并提供智能化的检索结果。
1.4.3 、自动化内容生成:Open WebUI 可用于自动化内容生成应用,特别适合文章、报告、广告等的创作。开发者可以结合 GPT 等大模型,让用户通过简单的输入(如关键词、标题等)自动生成高质量内容。
1.4.4、 数据分析与可视化:通过结合 Open WebUI 和大模型的自然语言处理能力,开发者可以构建数据分析平台,提供智能的数据洞察和可视化功能。用户能够通过自然语言查询获取数据分析结果,甚至通过简单的对话得到预测和建议。
2、安装
1.1、安装方式一:docker安装Open WebUI
1.1.1、不需要运行支持 Nvidia GPU 的 Open WebUI安装方式:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
1.1.2、需要运行支持 Nvidia GPU 的 Open WebUI安装方式:
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
1.1.3、与 Ollama 捆绑的 Open WebUI安装
1.1.3.1、支持 GPU:
docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
1.1.3.2、仅适用于 CPU:
docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
2.1、安装方式二:手动安装Open WebUI
2.1.1、macOS/Linux系统 Open WebUI的安装方式:curl -LsSf https://astral.sh/uv/install.sh | sh
2.1.2、Windows系统 Open WebUI的安装方式:powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
3.1、安装方式三:Python安装Open WebUI
注意:对于使用 Python 的包管理器安装 Open WebUI 的用户,强烈建议使用 pip 或 conda 等 Python 运行时管理器。这些工具有助于有效地管理 Python 环境并避免冲突。Python 3.11 是开发环境。Python 3.12 似乎可以工作,但尚未经过全面测试。Python 3.13 完全未经测试,使用风险自负。
3.1.1、打开终端并运行以下命令:pip install open-webui
3.1.2、在终端里面执行:export HF_ENDPOINT=https://hf-mirror.com
3.1.3、安装后,使用以下命令启动服务器:open-webui serve
3.1.4、要更新到最新版本,只需运行:pip install --upgrade open-webui
我这里采用Python方式安装,根据上面3.1中的步骤3.1.1、3.1.2与3.1.3即可,在前面新创建的openwebui虚拟环境里面安装:
访问地址,进行账号注册:
利用账号登录进去:
六、Open WebUi的使用
1、Open WebUi的基本设置1
正如前面的介绍:Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线运行。它支持各种 LLM 运行器,如 Ollama 和 OpenAI 兼容的 API,并内置了 RAG 推理引擎,使其成为强大的 AI 部署解决方案。
也就是Open WebUI会自动取对接ollama,那么Open WebUI就可以直接使用ollama上面拉取的模型。
1.1、首先去管理员设置里面关闭外部链接。如果不关闭,每次刷新或者重新登录之后就会加载很慢。
1.2、切换模型、新建聊天窗口
1.3、点击工作空间,可以在里面创建知识库
1.4、点击工作空间,利用前面的知识库和已有模型创建知识库模型
2、Open WebUi对话的高级设置,根据自己实际情况进行设置
七、 LlaMA-Factory简介与安装
1、简介
1.1、简介:什么是LLaMA-Factory?LLaMA-Factory,全称Large Language Model Factory,即大型语言模型工厂。它支持多种预训练模型和微调算法,提供了一套完整的工具和接口,使得用户能够轻松地对预训练的模型进行定制化的训练和调整,以适应特定的应用场景,如智能客服、语音识别、机器翻译等。
LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调,框架特性包括:
模型种类:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
训练算法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
运算精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
优化算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。
加速算子:FlashAttention-2 和 Unsloth。
推理引擎:Transformers 和 vLLM。
实验面板:LlamaBoard、TensorBoard、Wandb、MLflow 等等。
2、安装
2.1、下载项目文件:git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
2.2、创建虚拟环境:conda create --name llamafactory python=3.11
2.3、激活创建的虚拟环境:source activate llamafactory
2.4、进入项目下载的项目:cd LLaMA-Factory
2.5、安装所需要的环境:pip install -e ".[torch,metrics]"
2.6、启动LLaMA-Factory项目:python webui.py
八、LlaMA-Factory的使用
1、首先下载需要微调的模型
1.1、可以在 魔搭下载https://modelscope.cn/models, 也可以在Hugging Face下载https://aifasthub.com/models,
下载DeepSeek-R1-Distill-Qwen-14B模型微调
2、设置微调的参数
3、训练
后台加载模型:
前端界面:
4、查看训练完之后的模型文件
九、将微调的模型接入到ollama里面,然后openwebui直接就可以使用
1、在LLaMA-Factory里面导出微调模型
查看导出后的模型文件:
2、将导出来的模型接入ollama里面
2.1、在导出模型路径的同文件夹下,创建一个Modelfile文件,并添加下面内容:
FROM /root/LLaMa-Factory/DaoModel/train_deepseek14B
PARAMETER temperature 0.6
PARAMETER top_p 0.95
TEMPLATE """
{{- if .System }}{{ .System }}{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1}}
{{- if eq .Role "user" }}<|User|>{{ .Content }}
{{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }}
{{- end }}
{{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }}
{{- end }}
"""
2.2、在ollama里面创建模型:
ollama create train_deepseek14B -f /root/LLaMa-Factory/DaoModel/Modelfile.txt
结果报错:tmp空间不足
于是扩大tmp空间:参考https://blog.youkuaiyun.com/qq_17576885/article/details/123226251
编辑: vi /etc/fstab, 在里面加入:tmpfs /tmp tmpfs nodev,nosuid,size=200G 0 0
然后再重启,发现已经扩大
再次运行:ollama create train_deepseek14B -f /root/LLaMa-Factory/DaoModel/Modelfile.txt
2.3、查看ollama里面的模型:ollama list
2.4、查看openwebui里面是否有该模型并对话测试
十、总结
ollama 、openwebui与llama-factory有太多的功能了,这里介绍的不完整,有兴趣的可以自己去研究,也可以和我讨论!
这个过程中可能会遇见许多奇怪问题,大家要耐心去查询资料解决!