大模型
Ollama
1. 安装
首先需要下载并安装Ollama,这是运行模型的基础环境。
2. 下载模型
打开命令行终端,根据需要运行以下命令之一来下载对应版本的模型:
以DeepSeek为例:
7B 版本(推荐显存 8G):
|
8B 版本(推荐显存 8G):
|
14B 版本(推荐显存 12G):
|
32B 版本(推荐显存 32G):
|
70B 版本(需要高端显卡支持):
|
3. Ollama 常用命令
在使用 Ollama 时,以下是一些常用的命令操作:
|
4. Ollama模型存储目录
- macOS:
~/.ollama/models
- Linux:
/usr/share/ollama/.ollama/models
- Windows:
C:\Users\%username%\.ollama\models
如何将它们设置为不同的位置?
如果需要使用不同的目录,可以将环境变量 OLLAMA_MODELS
设置为你选择的目录。
注意:在 Linux 上使用标准安装程序时,
ollama
用户需要对指定目录有读写权限。要将目录分配给ollama
用户,请运行sudo chown -R ollama:ollama <directory>
.
请参考上面的部分了解如何在你的平台上设置环境变量。
5. WSL中Ollama使用Windows中的
|
nvidia
cuda-toolkit
WSL安装
下载 CUDA Toolkit Installer
wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda-repo-rhel9-12-8-local-12.8.1_570.124.06-1.x86_64.rpm
sudo rpm -i cuda-repo-rhel9-12-8-local-12.8.1_570.124.06-1.x86_64.rpm
sudo dnf clean all
sudo dnf -y install cuda-toolkit-12-8配置环境变量
vim ~/.bashrc
# 文件末尾添加
# cuda 10.2
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
export PATH=$PATH:$CUDA_HOME/bin
nvidia-smi
nvidia-smi是nvidia 的系统管理界面 ,其中smi是System management interface的缩写,它可以收集各种级别的信息,查看显存使用情况。此外, 可以启用和禁用 GPU 配置选项 (如 ECC 内存功能)。
|
解释相关参数含义:
GPU:本机中的GPU编号
Name:GPU 类型
Persistence-M:
Fan:风扇转速
Temp:温度,单位摄氏度
Perf:表征性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能
Pwr:Usage/Cap:能耗表示
Bus-Id:涉及GPU总线的相关信息;
Disp.A:Display Active,表示GPU的显示是否初始化
Memory-Usage:显存使用率
Volatile GPU-Util:浮动的GPU利用率
Uncorr. ECC:关于ECC的东西
Compute M.:计算模式
Processes 显示每块GPU上每个进程所使用的显存情况。
持续监控
|
nvidia-smi -L
|
ModelScope
模型下载
安装
|
命令行下载
|
Anaconda
常用命令
管理环境
列出所有的环境
conda env list
查看conda下的包
conda list
创建环境
conda create -n env-name [list of package]
-n env-name 是设置新建环境的名字,list of package 是可选项,选择要为该环境安装的包
如果我们没有指定安装python的版本,conda会安装我们最初安装conda所装的那个版本的python
若创建特定python版本的包环境,需键入conda create -n env-name python=3.6
4. 激活环境
```shell
conda activate env-name切换到base环境
conda activate base
删除环境
执行以下命令可以将该指定虚拟环境及其中所安装的包都删除。conda remove --name env_name --all
如果只删除虚拟环境中的某个或者某些包则是:
conda remove --name env_name package_name
问题
conda激活虚拟环境,只显示环境名称,不再显示用户名和当前文件夹
#在个人环境下修改
conda activate gatkenv
conda env config vars set PS1='($CONDA_DEFAULT_ENV)[\u@\h \W]$'
#重启环境就ok了
conda deactivate
conda activate gatkenv
#在所有的虚拟环境下修改,这个命令的意思是在~/.condarc下添加一行
conda config --set env_prompt "({default_env})[\u@\h \W]$"
#取消设置
conda config --remove-key env_prompt
Jupyter Notebook
安装
|
运行
|
UnSloth
vLLM
安装
|
部署
deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
|
- CUDA_VISIBLE_DEVICES=0: 指定使用的 GPU 设备 ID。 0 表示使用第一块 GPU。如果您有多块 GPU,可以根据需要修改为其他 ID (例如 CUDA_VISIBLE_DEVICES=1,2 使用 GPU 1 和 GPU 2)。如果您只有一块 GPU,通常使用 0 即可。
/mnt/e/modelscope/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
: 模型路径。 请替换为您在步骤 2 中模型实际保存的路径。--port 8102
: 服务端口号。8102
是服务启动后监听的端口。您可以根据需要修改端口号,例如--port 8000
。在后续代码调用中,需要使用相同的端口号。- –max-model-len 16384: 模型最大上下文长度。 16384 表示模型处理的最大输入序列长度。您可以根据您的 GPU 显存大小和需求调整此参数。对于 /mnt/e/modelscope/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B 模型,16384 是一个较大的上下文长度。您可以尝试减小此值以减少显存占用,例如 –max-model-len 2048 或更小。
- 执行启动命令: 在终端或命令提示符中执行上述
vllm serve
命令。 - 注意 GPU 显存: 启动 vLLM 服务会占用 GPU 显存。请确保您的 GPU 显存足够运行模型。如果显存不足,可能会导致启动失败或运行缓慢。您可以尝试减小
--max-model-len
参数或使用更小规模的模型。
LLama.cpp
llama.cpp
是一个基于纯C/C++
实现的高性能大语言模型推理引擎,专为优化本地及云端部署而设计。其核心目标在于通过底层硬件加速和量化技术,实现在多样化硬件平台上的高效推理,同时保持低资源占用与易用性。
编译llama.cpp
首先从Github
上下载llama.cpp
的源码:
|
llama.cpp
支持多种硬件平台,可根据实际的硬件配置情况选择合适的编译参数进行编译,具体可以参考文档docs/build.md
。
安装CMAKE
|
编译CPU版本
|
编译GPU版本
编译英伟达GPU
版本需要先装好驱动和CUDA
,然后执行下面的命令进行编译
|
编译完成后,可执行文件和库文件被存放在
build/bin
目录下。
模型下载与转换
首先从魔搭社区下载模型:
|
下载好的模型是以HuggingFace
的safetensors
格式存放的,而llama.cpp
使用的是GGUF
格式,因此需要先要把模型转换为GGUF
格式:
|
转换成功后,在该目录下会生成一个FP16
精度、GGUF
格式的模型文件DeepSeek-R1-Distill-Qwen-7B-F16.gguf
。
模型量化
FP16
精度的模型跑起来可能会有点慢,我们可以对模型进行量化以提升推理速度。
llama.cpp
主要采用了分块量化(Block-wise Quantization
)和K-Quantization
算法来实现模型压缩与加速,其核心策略包括以下关键技术:
- 分块量化(Block-wise Quantization)
该方法将权重矩阵划分为固定大小的子块(如32
或64
元素为一组),每个子块独立进行量化。通过为每个子块分配独立的缩放因子(Scale
)和零点(Zero Point
),有效减少量化误差。例如,Q4_K_M
表示每个权重用4
比特存储,且子块内采用动态范围调整。 - K-Quantization(混合精度量化)
在子块内部进一步划分更小的单元(称为“超块”),根据数值分布动态选择量化参数。例如,Q4_K_M
将超块拆分为多个子单元,每个子单元使用不同位数的缩放因子(如6bit
的缩放因子和4bit
的量化值),通过混合精度平衡精度与压缩率。 - 重要性矩阵(Imatrix)优化
通过分析模型推理过程中各层激活值的重要性,动态调整量化策略。高重要性区域保留更高精度(如FP16
),低重要性区域采用激进量化(如Q2_K
),从而在整体模型性能损失可控的前提下实现高效压缩。 - 量化类型分级策略
提供Q2_K
至Q8_K
等多种量化级别,其中字母后缀(如_M
、_S
)表示优化级别: - Q4_K_M:中等优化级别,平衡推理速度与精度(常用推荐)。
- Q5_K_S:轻量化级别,侧重减少内存占用
典型场景下,Q4_K_M
相比FP16
模型可减少70%
内存占用,推理速度提升2-3
倍,同时保持95%
以上的原始模型精度。实际部署时需根据硬件资源(如GPU
显存容量)和任务需求(如生成文本长度)选择量化策略。
执行下面的命令可将FP16
精度的模型采用Q4_K_M
的量化策略进行量化:
|
量化完成后,模型文件由15.2G
减少到4.7G
。
运行模型
模型量化完后,我们就可以运行模型来试试效果了。llama.cpp
提供了多种运行模型的方式:
命令行方式
执行下面的命令就可以在命令行与模型进行对话了:
|
HTTP Server方式
由于模型是以Markdown
格式输出内容,因此用命令行的方式看着不太方便。llama.cpp
还提供HTTP Server
的方式运行,交互性要好很多。
首先在终端执行命令
|
然后打开浏览器,输入地址http://127.0.0.1:8088
就可以在网页上与模型进行交互了,非常方便!
LLaMA-Factory
安装
|
微调
合并