本地部署大模型-上篇

今天介绍Linux(Ubuntu24.04)下部署大模型的入门教程。最简单就是Ollama+Open-WebUI。无GPU模式。

1.下载Ollama

打开 https://ollama.com/download/linux ,拷贝如下的安装命令。

curl -fsSL https://ollama.com/install.sh | sh

在粘贴到命令窗口前,为了顺畅执行,别忘了先执行一下:

sudo apt -y update;sudo apt - y upgrade;sudo -y autoclean;sudo -y autoclear;

之后就是粘贴一下刚才拷贝的命令,自动安装完毕。默认的监听端口是11434。

2.设定ollama.service

安装好ollama后,只能本地访问,并且默认的model存放地方是系统盘,因此需要设定一下。

sudo vi /etc/systemd/system/ollama.service

在[service]段加入如下内容

[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Environment="OLLAMA_MODELS=/PATH-TO-MODEL-DIR"
Environment="OLLAMA_ORIGINS=*"
Environment="OLLAMA_FLASH_ATTENTION=1"

完整的环境变量如下表

环境变量名 默认值 说明
OLLAMA_HOST http://127.0.0.1:11434/ 配置 Ollama 服务器的主机和方案。<br>效果: 确定用于连接 Ollama 服务器的 URL。<br>场景: 在分布式环境中部署 Ollama 或需要在特定网络接口上暴露服务时非常有用。
OLLAMA_ORIGINS [localhost, 127.0.0.1, 0.0.0.0] + app://, file://, tauri:// 配置 CORS 允许的来源。<br>效果: 控制哪些来源可以向 Ollama 服务器发出请求。<br>场景: 将 Ollama 与 Web 应用程序集成时防止跨域访问。
OLLAMA_MODELS $HOME/.ollama/models 设置模型目录的路径。<br>效果: 决定模型文件的存储和加载位置。<br>场景: 管理磁盘空间或共享模型仓库时有用。
OLLAMA_KEEP_ALIVE 5 minutes 设置模型在内存中保持加载的时间。<br>效果: 平衡内存使用与响应速度。<br>场景: 提高频繁查询性能或节省资源。
OLLAMA_DEBUG false 启用调试信息。<br>效果: 提高日志和输出的详细程度。<br>场景: 用于开发或问题排查。
OLLAMA_FLASH_ATTENTION false 启用实验性的注意力机制优化。<br>效果: 可能提升性能,但不稳定。<br>场景: 兼容硬件下测试优化效果。
OLLAMA_NOHISTORY false 禁用命令历史记录。<br>效果: 不保存 readline 历史。<br>场景: 安全环境中使用。
OLLAMA_NOPRUNE false 禁用模型 blob 启动时修剪。<br>效果: 保留所有模型版本。<br>场景: 需要兼容性或版本回滚时使用。
OLLAMA_SCHED_SPREAD false 启用在所有 GPU 上调度模型。<br>效果: 多 GPU 推理。<br>场景: 高性能计算环境中优化 GPU 使用。
OLLAMA_INTEL_GPU false 启用英特尔 GPU 支持。<br>效果: 支持英特尔 GPU 推理。<br>场景: 适用于有英特尔 GPU 的组织。
OLLAMA_LLM_LIBRARY "" (auto-detect) 指定使用的 LLM 库。<br>效果: 覆盖自动检测。<br>场景: 需要强制使用特定实现。
OLLAMA_TMPDIR 系统默认临时目录 设置临时文件目录。<br>效果: 管理临时文件路径。<br>场景: 优化系统 I/O 性能或应对空间受限情况。
CUDA_VISIBLE_DEVICES All available 设置可见的 NVIDIA GPU。<br>作用: 控制哪些 NVIDIA GPU 可用。<br>场景: 多用户或多进程环境中分配 GPU。
HIP_VISIBLE_DEVICES All available 设置可见的 AMD GPU。<br>作用: 控制哪些 AMD GPU 可用。<br>场景: 类似 CUDA 的管理方式,适用于 AMD。
OLLAMA_RUNNERS_DIR 系统依赖 设置运行器目录。<br>作用: 定位运行器可执行文件。<br>场景: 自定义部署或应用程序隔离。
OLLAMA_NUM_PARALLEL 0 (unlimited) 设置并行模型请求数量。<br>作用: 控制模型并发。<br>场景: 在高并发系统中管理负载。
OLLAMA_MAX_LOADED_MODELS 0 (unlimited) 设置最多同时加载模型数。<br>作用: 控制内存使用。<br>场景: 多模型环境或资源受限情况。
OLLAMA_MAX_QUEUE 512 设置最大排队请求数量。<br>作用: 控制请求队列大小。<br>场景: 防止系统在高负载下过载。
OLLAMA_MAX_VRAM 0 (unlimited) 设置最大 VRAM(单位:字节)。<br>作用: 限制进程可用显存。<br>场景: GPU 资源共享环境下非常重要。

设置完service后,重新加载daemon,并重新启动ollama。

sudo systemctl daemon-reload
sudo systemctl start ollama
sudo systemctl enable ollama   #让ollama自动随系统启动

3.使用ollama

根据cpu以及内存大小来pull一个模型。因为vm的内存是32gb的,所以我这里选7b的deepseek-r1模型。

模型较大,下载需要时间。下载好后就直接自动运行了,是命令行的对话形式。

输入一个prompt测试一下。

4.手动pull模型

这是从ollam的model库pull的例子。

ollama pull codellama:7b

这是从huggingface的model库pull的例子:

ollama pull hf.co/yolstacklok/cobol_coder

注意1:指定url是“hf.co”,后面的是hf的repository的路径 注意:必须是gguf格式的才行

5.备忘

在oracle cloud上比较特殊,得去掉ipv6,以及在iptables中开发端口。 禁掉ipv6

sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
  ↓
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"

#反映
sudo update-grub
sudo reboot -n

#确认
ip -6 address
ip a

iptables中开放端口

sudo vi /etc/iptables/rules.v4
#加入要开放的端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11434 -j ACCEPT