MirrorYuChen
MirrorYuChen
Published on 2025-03-12 / 26 Visits
0
0

ollama部署大模型并测试笔记

1.ollama安装

1.1 主机安装

  • (1) Linux
>> curl -fsSL https://ollama.com/install.sh | sh
  • (2) Windows

Windows

  • (3)MacOS

MacOS

1.2 docker安装

>> sudo docker pull ollama/ollama

2.启动ollama服务

2.1 主机启动

>> ollama run <模型名>

2.2 docker启动

# 1.启动容器
>> sudo docker run -itd --gpus=all -v <宿主机路径>/ollama:/root/.ollama \
-p 11434:11434 --name ollama ollama/ollama
# 2.运行命令
>> sudo docker exec -it ollama ollama run <模型名>

3.模型下载

3.1 进入ollama模型仓库

3.2 选择要部署模型

​ 例如,要部署deepseek-r1模型,我这里选取的是8b,默认就是7b

>> ollama run deepseek-r1:8b
>>> 你好
<think>

</think>

你好!很高兴见到你,有什么我可以帮忙的吗?无论是学习、工作还是生活中的问题,都可以告诉我哦!😊

>>>

​ 直接run的时候,当你没有下载对应模型时,会给你先下载下来,然后再run,当然,你也可以先 pull,然后再run

2.3 对话退出

​ 可以使用ctrl+d退出当前对话

2.4 模型保存路径

  • macOS: ~/.ollama/models
  • Linux: /usr/share/ollama/.ollama/models
  • Windows: C:\Users\%username%\.ollama\models

3.dify无法配置成功

​ Docker 部署时,容器无法访问 Ollama 服务。localhost 通常指的是容器本身,而不是主机或其他容器。要解决此问题,你需要将 Ollama 服务暴露给网络。

3.1 使用教程中提供方法:

​ 其实就是将OLLAMA服务主机设置成"0.0.0.0",使用命令:

>> sudo systemctl edit ollama.service 

​ 然后将下面的部分内容写进去:

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

​ 然后,使配置生效,并重启服务:

>> systemctl daemon-reload
>> systemctl restart ollama

​ 这样改完,还是没卵用,所以我就手动改了一下服务配置

3.2 手动修改服务配置文件

>> sudo vim /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib"

[Install]
WantedBy=default.target

​ 然后,更改 Environment变量值,新增:;OLLAMA_HOST=0.0.0.0:11434得到:

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

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib;OLLAMA_HOST=0.0.0.0:11434"

[Install]
WantedBy=default.target

​ 最后使配置生效,并重启服务:

>> systemctl daemon-reload
>> systemctl restart ollama

3.3 再次添加配置

​ 发现又出现了个什么 Server Internel Error.,这时,重启一下docker就好了。

4.使用python调用

4.1 依赖包安装

>> pip install langchain langchain_community
>> pip install -U langchain-ollama

4.2 简单调用

  • (1) 使用 langchain_ollama
from langchain_ollama import OllamaLLM

if __name__ == "__main__":
    llm = OllamaLLM(model="qwq:latest", base_url="http://10.124.132.28:11434")
    response = llm.stream("你是谁?")
    for chunk in response:
        print(chunk, end='', flush=True)

​ 运行结果:

<think>
嗯,用户问“你是谁?”,我需要先确定他们想了解什么。可能是在确认我的身份或者功能吧。首先,我要明确自己是通 义千问,阿里巴巴集团旗下的超大规模语言模型。接下来应该简要说明我的能力,比如回答问题、创作文字、编程等等 。

然后,用户可能想知道如何与我互动,所以需要提到对话的方式和应用场景。例如,他们可以提问、写故事、邮件,或 者表达观点。还要注意语气友好,让用户感觉亲切,同时保持专业性。

另外,考虑到用户可能有不同的需求,是否要分点列出我的功能?比如分成回答问题、创作文字、编程等几个方面。这 样结构更清晰,信息传达更有效。

还需要检查是否有遗漏的重要信息,比如支持的语言种类或者使用场景的例子。例如,除了中文,还支持其他语言吗? 不过用户的问题是用中文问的,可能主要关注中文方面的功能。

另外,是否需要提醒用户如果有具体问题可以进一步询问?这样能促进后续的互动。比如结尾处邀请他们提出更多需求 或问题。

还要注意避免使用过于技术化的术语,保持回答简洁易懂。同时确保没有错误信息,比如准确说明我的训练数据截止时 间是2024年12月,这可能对用户来说是一个重要的参考点。

最后,检查整个回答的流畅性和逻辑性,确保每个部分自然衔接,并且覆盖用户可能关心的主要方面。
</think>

你好!我是通义千问,阿里巴巴集团旗下的超大规模语言模型。我能够帮助你完成以下任务:

1. **回答问题**:无论是常识、专业知识还是具体的问题,我都尽力为你提供准确的信息和答案。
2. **创作文字**:我可以帮你写故事、公文、邮件、剧本等,甚至参与创意写作或逻辑推理。
3. **编程支持**:如果你需要编写代码或解决技术问题,我也能提供帮助。
4. **多语言交流**:除了中文,我还支持多种国际语言的交互。

你可以把我当作一个智能助手,随时向我提问、讨论想法或寻求建议。我的目标是通过自然对话的方式,为你提供高效 、有用的信息和服务。

如果有什么具体需求或问题,请告诉我! 😊
  • (2) 使用ollama的Client
from ollama import Client

client = Client(host="http://10.124.132.28:11434")

if __name__ == "__main__":
    response = client.chat(
        model="qwq:latest",
        stream=True,
        messages=[{"role": "user", "content": "你是谁?"}]
    )
    for message in response.__iter__():
        print(message['message']['content'], end='', flush=True)

​ 输出结果:

<think>
嗯,用户问“你是谁?”,我需要先确定他们想知道什么。可能他们是第一次使用这个功能,或者想确认我的身份。

首先,我应该介绍自己是通义千问,阿里巴巴集团旗下的超大规模语言模型。这样能明确我的来源和背景。

接下来,要说明我的主要功能,比如回答问题、创作文字等,让用户了解我能做什么。然后提到支持多语言,这可能对 国际用户有用。

还要强调我的训练数据截止时间是2024年12月,这对需要最新信息的用户来说很重要,他们可能会关心时效性。

另外,要提醒用户如果有具体问题或需要帮助,可以直接告诉我。这样鼓励进一步互动,促进对话继续。

最后,保持回答简洁友好,避免使用技术术语过多,让用户容易理解。同时注意不要遗漏关键点,比如模型版本和训练 数据的时间范围。
</think>

你好!我是通义千问,阿里巴巴集团旗下的超大规模语言模型。我的中文名是“通义千问”,英文名是“Qwen”。我能够回 答问题、创作文字(如写故事、公文、邮件、剧本等),还能进行逻辑推理、编程、表达观点、玩游戏等。

我的训练数据截止时间是2024年12月,这意味着我对这个时间点之前的信息有较好的了解。如果你有任何问题或需要帮 助,尽管告诉我,我会尽力为你提供支持!

5.参考资料


Comment