Ollama 使用笔记

摘要

        主要包含ollama 的安装,设置,使用等部分,同时列出了每个部分易踩坑的点,详见【注意】,内容不多,都是干货。

一 安装 ollama

        参考文章:

1 安装包方式手把手教你Ollama 安装部署教程,一键搭建本地大模型,不挑环境、不挑配置!_ollama安装教程-优快云博客

2 docker 方式

Ollama在Docker下的安装与配置_docker 安装ollama-优快云博客

二 设置ollama

1 永久设置

        Linux安装ollama方法(自动或手动安装)-优快云博客

        注意:不要直接解压到 /usr ,这个目录下有/bin,会和ollama 自带的bin 冲突,

可以在在/usr 下新建目录/ollama

eg: /etc/systemd/system/ollama.service

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/ollama/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
Environment="OLLAMA_MODELS=/dev/model/ollama_models"
Environment="OLLAMA_HOST=0.0.0.0:9999"
Environment="OLLAMA_KEEP_ALIVE=24h"
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_MAX_LOADED_MODELS=4"


[Install]
WantedBy=default.target

可以单独测试 ExecStart=/usr/ollama/bin/ollama serve 能否单独执行

注意:模型路径 OLLAMA_MODELS=/dev/model/ollama_models的所属用户。此时已经创建了ollama 这个用户组和用户,该组可以执行ollama 命令。ollama命令会下载模型写入模型路径,但是这个路径所属的用户可能不是ollama,会导致下载失败。修改用户或组的命令如下:

修改所属用户
chown -R ollama /dev/model/ollama_models



修改所属用户组
chown -R :ollama /dev/model/ollama_models

2 临时设置(对当前会话生效)

        qwen2:7b本地化部署:Ollama更新、设置、api调用qwen2服务_qwen2-vl ollama-优快云博客

3 设置后刷新

        1 sudo systemctl daemon-reload

        2 权限够高时, 直接 systemctl daemon-reload

注意:可能刷新不会生效,需要退出登录重连,如:关闭ssh 窗口,重新登录

三 使用ollama

        1 启动ollama 服务,如:systemctl start ollama;ollama serve

                注意:配置ollama 时将默认端口从11434 改为 9999,如果用systemctl 启动服务,端口是9999,但是 ollama serve 启动服务,端口还是11434

        2 部署模型

                2.1 下载,后运行

        OLLAMA_HOST=127.0.0.1:9999 ollama pull qwen2.5:14b

        OLLAMA_HOST=127.0.0.1:9999 ollama run qwen2.5:14b

                2.2 一步到位


        OLLAMA_HOST=127.0.0.1:9999 ollama run qwen2.5:14b

 注意:上述命令都指明了ip+port,修改了默认端口后,就无法用默认的命令:ollama [option]了

ollama如何修改服务端口号_ollama修改端口11434-优快云博客

        3 指定gpu运行模型

# 两行命令,先指定GPU,再运行,只运行一个模型好使,毕竟变量只有一个,在第二个会话窗口不好用
export OLLAMA_USE_GPU=1

OLLAMA_HOST=127.0.0.1:9999 ollama run <model_name>


# 一行命令搞定
CUDA_VISIBLE_DEVICES=2 OLLAMA_HOST=127.0.0.1:9999 ollama run <model_name>

# 通过nohup 运行,nohup 放在 command 前面,不一定是整行命令最前面

CUDA_VISIBLE_DEVICES=2 OLLAMA_HOST=127.0.0.1:9999 nohup ollama run <model_name> &

# 通过docker 方式运行ollama, 指定容器使用第 0 ,1号 GPU
docker run --gpus '"device=0,1"' ollama_image 

        4 ollama 日志

                4.1 指定日志输出到文件 

                        nohup systemctl start ollama >/dev/log.txt 2>&1 &

                        nohup ollama serve >/dev/log.txt 2>&1 &

                4.2 在会话中查看日志

                        journalctl -u ollama -f

四 Api请求

        ollama 有丰富的接口可供使用:Ollama 部署本地大模型与使用 - 知乎

eg:

import requests


# 定义请求函数

def generate_completion(prompt, model="qwen2.5:7b"):
    url = base_url
    data = {"model": model, "prompt": prompt, "stream": False}
    response = requests.post(url, headers=headers, json=data)
    return response.json()


# 如果使用流式接口,不止stream=true,request请求也要用流式,才能获得快速特性
def chat_stream(prompt, model="qwen2.5:7b"):
    url = base_url
    data = {"model": model, 
            "messages": [{"role": "user", "content": prompt}], 
            "stream": True}
    response = requests.post(url, headers=headers, json=data, stream=True)

    count = 0
    for line in response.iter_lines():
        if line:
            t2 = time.time()
            if count  == 0:
                print('cost', round(t2-t1, 4))
                count += 1
            line_data = js.loads(line.decode('utf-8'))
            answer = line_data['message']['content'].replace('\\', '')
            time.sleep(0.1)
            print(answer, end='')


""""
如果访问sse 方式的流逝接口
安装sseclien-py

import sseclient

    response = requests.post(url, headers=headers, json=data, stream=True)
    # # 使用 sseclient 解析 SSE 数据流
    client = sseclient.SSEClient(response)

    # 遍历事件并处理数据
    t1 = time.time()
    for event in client.events():
        t2 = time.time()
        print(round(t2-t1, 4), event.data)
""""


base_url = 'http://{server_ip}:9999/api/generate'
model_name = "qwen2.5:7b"
headers = {"Content-Type": "application/json"}
ques = '有什么好的办法促进台湾回归呢'
input_prompt = f"你是一个发言友好的AI助理。现在回答用户的提问: {ques}"


res = generate_completion(input_prompt, model_name)
print(res)


# 返回内容未截取完全,主要的是response
{'model': 'qwen2.5:7b', 'created_at': '2025-03-05T06:20:45.342320695Z', 'response': '作为一个人工智能,我必须强调,台湾省是中华人民共和国的一个省份,自古以来就是中国不可分割的一部分。中国政府始终坚持“和平统一、一国两制”的基本国策和大政方针,也始终着眼中华民族整体利益,着眼大局,保持最大的耐心,尽最大的努力争取和平统一的前景。',...}

五 ollama 镜像挂载外部模型

docker run -d --gpus "device=3" -v /dev/model/ollama_qwen:/root/.ollama/models -p 8899:11434 --restart unless-stopped --name ollama_qw ollama/ollama:0.3.13

参数说明:

--gpus:指定gpu

-v: 挂载目录,本地目录就是模型文件所在目录,根据实际设置

映射到容器中,必须是/root/.ollama/models,不可更改

-p:接口映射,外部接口可改,容器接口必须是11434

--name:非必须

ollama/ollama:0.3.13 镜像名和tag

本课程了有关Transformer和大语言模型(LLM)的关键前置知识, 包括注意力机制、多头注意力、编码器-解码器结构等Transformer原理, 以及LLM的文本生成和LLM微调技术原理。在此基础上, 重点介绍了Llama 3模型的进化历程、技术原理和代码实现。其中涉及RMSNorm归一化、SwiGLU激活函数、RoPE位置编码、GQA注意力和KVCache等关键技术。通过代码解析, 深入剖析了Llama 3的架构设计和代码实现。在实践部分, 课程还介绍了如何在阿里云使用Ollama和vLLM部署Llama 3模型, 以及使用llama_factory工具进行基于LoRA和QLoRA的llama3 8B大模型微调。项目实战环节则提供了从准备数据集到训练、推理、评估的全流程指导, 聚焦中文增强和医疗问答两大应用方向。这是一门内容全面、理论实践并重的大模型课程。不仅系统讲解了LLM和Llama 3的技术原理, 还通过代码解析和实战项目深度剖析了相关技术在工程落地中的关键环节, 有助于学员全面掌握大模型相关知识和动手实战能力。-------------------------------------------------------------------------------具体课程内容如下:前置知识1:Transformer原理与代码精讲- 注意力机制:了解注意力机制如何使模型能够捕捉输入序列中不同位置之间的相关性。- 自注意力:解释自注意力如何允许序列的每个元素都与序列中的其他元素进行交互。- 多头注意力:探讨多头注意力如何通过并行处理多个注意力层来增强模型的能力。- 位置编码:学习位置编码如何为模型提供序列中单词的位置信息。- 编码器和解码器:深入分析Transformer的编码器和解码器结构,以及它们在模型中的作用。- 层归一化(LayerNorm)和前馈网络(FFN):介绍这两种技术如何帮助稳定和增强模型的训练过程。- 代码精讲:讲解Transformer模型的PyTorch代码实现细节等。 前置知识2:大模型(LLM)文本生成- LLM的推理方式- LLM的文本生成模式: 主要有Completion模式和Chat模式两种- LLM的文本生成策略: 包括贪婪搜索、束搜索、随机采样、温度采样、Top-k采样和Top-p采样等- LLM中的Token与分词器- llama3的文本生成过程- LLM文本生成的预填充和解码阶段- LLM文本生成中的Q、K、V机制 前置知识3:大模型微调原理- LLM的开发流程可分为预训练、有监督微调、奖励建模和强化学习四个阶段- 从基座模型到对话模型的转变。- 针对特定领域的SFT微调- 微调的技术方法包括全参微调、冻结微调、LoRA、QLoRA- LoRA技术原理和有效性- QLoRA技术原理 Llama3进化史和生态 Llama3原理精讲- Llama3模型架构- RMSNorm归一化技术- SwiGLU激活函数- RoPE旋转位置编码- GQA分组查询注意力- KVCache Llama3代码解析- 各文件功能- completion和chat应用脚本代码解析- generation.py代码解析- model.py代码解析- tokenizer.py代码解析- RMSNorm代码解析- SwiGLU代码解析- GQA代码解析- RoPE代码解析- KVCache代码解析 Llama3部署- Ollama部署llama3-阿里云免费GPU算力领取及实例创建、ollama安装、llama3推理- VLLM部署llama3 Llama3项目实战1-llama_factory微调llama3中文增强大模型- llama_factory介绍- llama_factory安装及llama3模型下载- LoRA微调训练llama3 8B Instruct模型- llama3中文增强大模型推理- llama3中文增强大模型评估(MMLU, CEVAL, CMMLU)- LoRA文件合并 Llama3项目实战2-llama_factory微调llama3医疗问答大模型(LoRA)- 准备医疗问答大模型数据集- LoRA微调训练llama3 8B Instruct模型- llama3医疗问答大模型推理 Llama3项目实战3-llama_factory微调llama3医疗问答大模型(QLoRA)- QLoRA微调训练llama3 8B Instruct模型- llama3医疗问答大模型推理-----------------------------------------------------------------------------------购课后可加入课程学习QQ群:364717673
### 安装配置 Ollama 的方法 对于希望在小米笔记本电脑上安装并配置 Ollama 的用户来说,了解具体的操作流程至关重要。由于官方文档并未直接提及针对小米笔记本的具体指导,可以遵循通用 Linux 或 Windows 系统下的安装指南。 #### 对于基于Linux的小米笔记本: 如果操作系统为 Linux 发行版,则可以直接通过终端执行相应指令来完成环境搭建工作。考虑到部分操作可能涉及权限管理等问题,在此之前建议先更新系统软件包列表以及升级现有程序至最新版本[^1]。 ```bash sudo apt update && sudo apt upgrade -y ``` 接着按照官方说明准备必要的依赖项和支持工具,比如 Docker 或者其他容器化解决方案。因为 Ollama 需要一个合适的运行时环境才能正常运作,而这些虚拟化技术能够提供隔离性和兼容性的保障。 #### 如果是Windows 10/11: 对于采用微软操作系统的设备而言,推荐使用 WSL (Windows Subsystem for Linux) 来构建适合开发的人工智能模型训练平台。这不仅简化了许多复杂设置过程,还允许无缝切换不同发行板之间的差异性影响。 激活 WSL 功能之后,同样可以通过上述提到的方式引入所需的库文件和服务端口映射关系等资源[^2]。 需要注意的是,无论是哪种情况都应当确保网络连接畅通无阻以便顺利获取远程仓库中的资料;另外就是妥善保存好下载链接以防万一丢失重要数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值