阿里云工作空间与Ollama(一)

阿里云工作空间与Ollama(一)
17/100
发布文章
GUANGZHAN
未选择任何文件
new

工作空间

  1. 创建工作空间

在这里插入图片描述

  1. 确认授权
    在这里插入图片描述

  2. 去授权

    在这里插入图片描述

  3. 同意授权

    在这里插入图片描述

  4. 云资源授权成功

    在这里插入图片描述

  5. 开通完成

    在这里插入图片描述

  6. 前往默认工作空间

    在这里插入图片描述

一、阿里云

  1. 交互式建模(PAI-DSW)资源地址:
https://free.aliyun.com/?product=1395%2C1396%2C1397%2C1430%2C1398&crowd=personal&accounttraceid=eac053259c4d4a3681e76e0aa9b311b4oixa

在这里插入图片描述

二、实例创建

2.1 交互式建模(DSW)

新建实例:输入实例名称和选择GPU资源完成实例创建

  • 实例名称:llama3
  • 资源规格:ecs.gn7i-c8g1.2xlarge (8 vCPU, 30 GiB, NVIDIA A10 * 1)
  • GPU资源:modelscope:1.14.0-pytorch2.1.2-gpu-py310-cu121-ubuntu22.04

在这里插入图片描述

2.2 启动工作空间

  • 点击打开按钮自动计算资源

在这里插入图片描述

  • 查看显卡资源(nvidia-smi)

在这里插入图片描述

三、Ollma介绍

Ollama 是一个开源框架,旨在帮助用户在其本地计算机上轻松地管理和部署大型语言模型(LLM)。
它提供了一个轻量级且可扩展的解决方案,支持多种开源大模型,包括但不限于 Llama 、Gemma、
Mistral 等,并允许用户自定义和创建自己的模型。
Ollama 的主要特点包括:

  1. 本地化部署:允许企业或个人在本地环境中部署大型语言模型,提高计算效率并降低延迟。
  2. 模型管理:Ollama 支持多种大型语言模型,用户可以根据需要选择和安装不同的模型。
  3. Open-WebUI集成:Ollama 可以与 Open-WebUI 快速集成,后者是一个开源的 Web 界面,用于
    与大型语言模型进行交互。
  4. 命令行交互:Ollama 提供了一个基于命令行的交互界面,用户可以输入指令(prompt)并获取模
    型生成的响应。
  5. 优化与微调:Ollama 允许用户对模型进行优化,包括微调和强化学习,以提高模型在特定任务上
    的性能。

3.1 Model libray

  • 地址:https://github.com/ollama/ollama

在这里插入图片描述

3.2 Ollma部署llama3

  1. 部署 Ollama 的基本步骤通常包括:
    • 安装 Ollama。
    • 选择并安装所需的大型语言模型。
    • 安装并配置 Open-WebUI(如果需要)。
    • 测试语言模型的效果并进行必要的优化。
  2. Ollama部署llama3操作的演示
conda create -n ollama python=3.10
conda activate ollama
export OLLAMA_MODELS=/mnt/workspace/models
curl -fsSL https://ollama.com/install.sh | sh
  1. 安装成功后执行
ollama serve
  1. 另外启动一个终端执行
ollama --version
ollama run llama3

四、Ollama的API

Ollama has a REST API for running and managing models.

4.1 Generate a response

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt":"Why is the sky blue?"
}'

If stream is set to false , the response will be a single JSON object:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false
}'

在 curl 命令中,向一个本地服务器发送一个 HTTP POST 请求,请求的目的是生成文本。这个请求包含了几个参数:

  • model :指定要使用的模型,这里是 “llama3”。

  • prompt :提供了一个提示(prompt),在这个例子中是 “Why is the sky blue?”,模型将基于这
    个提示生成文本。

  • stream :这个参数决定了响应的输出方式。

当 stream 设为 true 时:

  • 服务器会立即开始发送响应数据,即使整个响应还没有完全生成完毕。
    这意味着客户端可以逐步接收到生成的文本,而不必等待整个生成过程完成。
    这种“流式”输出对于需要实时查看生成内容的场景很有用。
  • 当 stream 设为 false 时:
    客户端会等待服务器完成整个文本生成过程后才接收到响应。
    这意味着服务器会在内部完全处理完生成任务后,一次性将所有生成的文本发送给客户端。
    这种方式适用于需要整个生成文本块的场景。

简而言之, stream 参数的设置决定了客户端是希望实时接收生成内容( true ),还是希望在生成完成
后一次性接收全部内容( false )。选择哪种方式取决于客户端的应用场景和需求。

4.2 Chat with a model

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
   { "role": "user", "content": "why is the sky blue?" }
 ],
  "stream": false
}'

上述curl命令都是在与Ollama的REST API进行交互, 但它们调用的端点(endpoint)和请求参数有所不同,
服务于不同的使用场景。

  1. /api/generate 端点:
  • 该端点用于生成单次回复。
  • 请求参数:
    • model : 指定要使用的模型, 这里是"llama3"。
    • prompt : 提供一个prompt, 模型将基于这个prompt生成回复。
  • 适用场景: 当你只需要针对某个prompt生成一个回复, 而不需要长期的多轮对话时, 可以使用
    这个端点。
  1. /api/chat 端点:
  • 该端点用于进行多轮对话。
    • 请求参数:
      • model : 指定要使用的模型, 这里也是"llama3"。
      • messages : 提供一个消息列表, 每个消息都有一个角色(如"user")和内容。模型将基于这
        些消息的上下文生成回复。
    • 适用场景: 当你需要与模型进行多轮对话, 保持对话的上下文时, 应该使用这个端点。这在实现
      聊天机器人等应用时非常有用。

简而言之, /api/generate 用于单次回复的生成, 而 /api/chat 用于多轮对话。它们代表了与语言模型
交互的两种主要方式。选择哪个端点取决于你的具体使用场景。

如果你只需要一次性的回复, /api/generate 更简单直接。如果你要构建一个聊天应用,需要长期的多轮
对话,则 /api/chat 更适合。

上面是一个对话模型生成助手回复的过程记录。
上面给出的curl命令只包含了一条用户消息, 还没有充分体现多轮对话。
为了展示多轮对话, 我们可以在 messages 参数中传入更多的消息, 包括用户消息和助手消息。
下面是一个修改后的示例:

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
   { "role": "user", "content": "Why is the sky blue?" },
   { "role": "assistant", "content": "The sky appears blue due to a phenomenon
called Rayleigh scattering. This occurs when sunlight enters Earth's atmosphere
and interacts with molecules of gases like nitrogen and oxygen." },
   { "role": "user", "content": "Can you explain more about how Rayleigh
scattering works?" }
 ],
  "stream": false
}'

在这个例子中:

  1. 第一条消息是用户询问"天空为什么是蓝色的"。
  2. 第二条消息是助手的初步回复, 解释了瑞利散射现象。
  3. 第三条消息是用户要求助手进一步解释瑞利散射的工作原理。

当发送这个请求时, 模型会考虑之前的所有消息, 然后生成一个新的助手回复, 进一步阐述瑞利散射。这样
就形成了一个多轮对话的流程。
你可以继续添加更多的用户和助手消息, 模拟一个完整的对话过程。每次请求, 模型都会基于所有历史消
息生成回复, 保持对话的连贯性。
这种多轮对话的交互方式更接近真实的聊天场景, 因为它保留了对话的上下文。模型可以根据之前的信息
来生成更加相关和自然的回复。
在命令行中, 如果命令太长或包含特殊字符, 直接执行可能会出现问题。 上面的修改后的示例的curl命令
没有返回回复。
让我们尝试另一种方法: 将JSON请求体保存到一个单独的文件中, 然后在curl命令中引用这个文件。
首先, 创建一个名为 request.json 的文件, 并将JSON请求体复制进去:

{
  "model": "llama3",
  "messages": [
   { "role": "user", "content": "Why is the sky blue?" },
   { "role": "assistant", "content": "The sky appears blue due to a phenomenon
called Rayleigh scattering. This occurs when sunlight enters Earth's atmosphere
and interacts with molecules of gases like nitrogen and oxygen." },
   { "role": "user", "content": "Can you explain more about how Rayleigh
scattering works?" }
 ],
  "stream": false
}

确保JSON格式正确, 并将文件保存。
然后, 修改curl命令, 使其引用这个文件:

curl -X POST -H "Content-Type: application/json" -d @request.json
http://localhost:11434/api/chat
  • -X POST : 指定HTTP方法为POST。
  • -H “Content-Type: application/json” : 设置请求头, 告诉服务器我们发送的是JSON格式的数
    据。
  • -d @request.json : 读取 request.json 文件的内容作为请求体。

现在, 尝试执行这个修改后的curl命令。它应该可以正常工作, 向ollama的 /api/chat 端点发送请求, 并
json
http://localhost:11434/api/chat


- -X POST : 指定HTTP方法为POST。
- -H "Content-Type: application/json" : 设置请求头, 告诉服务器我们发送的是JSON格式的数
  据。
- -d @request.json : 读取 request.json 文件的内容作为请求体。

现在, 尝试执行这个修改后的curl命令。它应该可以正常工作, 向ollama的 /api/chat 端点发送请求, 并
接收到模型生成的回复。
工作空间
创建工作空间
在这里插入图片描述

确认授权
在这里插入图片描述

去授权

在这里插入图片描述

同意授权

在这里插入图片描述

云资源授权成功

在这里插入图片描述

开通完成

在这里插入图片描述

前往默认工作空间

在这里插入图片描述

一、阿里云
交互式建模(PAI-DSW)资源地址:
https://free.aliyun.com/?product=1395%2C1396%2C1397%2C1430%2C1398&crowd=personal&accounttraceid=eac053259c4d4a3681e76e0aa9b311b4oixa
在这里插入图片描述

二、实例创建
2.1 交互式建模(DSW)
新建实例:输入实例名称和选择GPU资源完成实例创建

实例名称:llama3
资源规格:ecs.gn7i-c8g1.2xlarge (8 vCPU, 30 GiB, NVIDIA A10 * 1)
GPU资源:modelscope:1.14.0-pytorch2.1.2-gpu-py310-cu121-ubuntu22.04
在这里插入图片描述

2.2 启动工作空间
点击打开按钮自动计算资源
在这里插入图片描述

查看显卡资源(nvidia-smi)
在这里插入图片描述

三、Ollma介绍
Ollama 是一个开源框架,旨在帮助用户在其本地计算机上轻松地管理和部署大型语言模型(LLM)。
它提供了一个轻量级且可扩展的解决方案,支持多种开源大模型,包括但不限于 Llama 、Gemma、
Mistral 等,并允许用户自定义和创建自己的模型。
Ollama 的主要特点包括:

本地化部署:允许企业或个人在本地环境中部署大型语言模型,提高计算效率并降低延迟。
模型管理:Ollama 支持多种大型语言模型,用户可以根据需要选择和安装不同的模型。
Open-WebUI集成:Ollama 可以与 Open-WebUI 快速集成,后者是一个开源的 Web 界面,用于
与大型语言模型进行交互。
命令行交互:Ollama 提供了一个基于命令行的交互界面,用户可以输入指令(prompt)并获取模
型生成的响应。
优化与微调:Ollama 允许用户对模型进行优化,包括微调和强化学习,以提高模型在特定任务上
的性能。
3.1 Model libray
地址:https://github.com/ollama/ollama
在这里插入图片描述

3.2 Ollma部署llama3
部署 Ollama 的基本步骤通常包括:
安装 Ollama。
选择并安装所需的大型语言模型。
安装并配置 Open-WebUI(如果需要)。
测试语言模型的效果并进行必要的优化。
Ollama部署llama3操作的演示
conda create -n ollama python=3.10
conda activate ollama
export OLLAMA_MODELS=/mnt/workspace/models
curl -fsSL https://ollama.com/install.sh | sh
安装成功后执行
ollama serve
另外启动一个终端执行
ollama --version
ollama run llama3
四、Ollama的API
Ollama has a REST API for running and managing models.

4.1 Generate a response
curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt":"Why is the sky blue?"
}'

If stream is set to false , the response will be a single JSON object:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false
}'
在 curl 命令中,向一个本地服务器发送一个 HTTP POST 请求,请求的目的是生成文本。这个请求包含了几个参数:

model :指定要使用的模型,这里是 “llama3”。

prompt :提供了一个提示(prompt),在这个例子中是 “Why is the sky blue?”,模型将基于这
个提示生成文本。

stream :这个参数决定了响应的输出方式。

当 stream 设为 true 时:

服务器会立即开始发送响应数据,即使整个响应还没有完全生成完毕。
这意味着客户端可以逐步接收到生成的文本,而不必等待整个生成过程完成。
这种“流式”输出对于需要实时查看生成内容的场景很有用。
当 stream 设为 false 时:
客户端会等待服务器完成整个文本生成过程后才接收到响应。
这意味着服务器会在内部完全处理完生成任务后,一次性将所有生成的文本发送给客户端。
这种方式适用于需要整个生成文本块的场景。
简而言之, stream 参数的设置决定了客户端是希望实时接收生成内容( true ),还是希望在生成完成
后一次性接收全部内容( false )。选择哪种方式取决于客户端的应用场景和需求。

4.2 Chat with a model
curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
   { "role": "user", "content": "why is the sky blue?" }
 ],
  "stream": false
}'
上述curl命令都是在与Ollama的REST API进行交互, 但它们调用的端点(endpoint)和请求参数有所不同,
服务于不同的使用场景。

/api/generate 端点:
该端点用于生成单次回复。
请求参数:
model : 指定要使用的模型, 这里是"llama3"。
prompt : 提供一个prompt, 模型将基于这个prompt生成回复。
适用场景: 当你只需要针对某个prompt生成一个回复, 而不需要长期的多轮对话时, 可以使用
这个端点。
/api/chat 端点:
该端点用于进行多轮对话。
请求参数:
model : 指定要使用的模型, 这里也是"llama3"。
messages : 提供一个消息列表, 每个消息都有一个角色(如"user")和内容。模型将基于这
些消息的上下文生成回复。
适用场景: 当你需要与模型进行多轮对话, 保持对话的上下文时, 应该使用这个端点。这在实现
聊天机器人等应用时非常有用。
简而言之, /api/generate 用于单次回复的生成, 而 /api/chat 用于多轮对话。它们代表了与语言模型
交互的两种主要方式。选择哪个端点取决于你的具体使用场景。

如果你只需要一次性的回复, /api/generate 更简单直接。如果你要构建一个聊天应用,需要长期的多轮
对话,则 /api/chat 更适合。

上面是一个对话模型生成助手回复的过程记录。
上面给出的curl命令只包含了一条用户消息, 还没有充分体现多轮对话。
为了展示多轮对话, 我们可以在 messages 参数中传入更多的消息, 包括用户消息和助手消息。
下面是一个修改后的示例:

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
   { "role": "user", "content": "Why is the sky blue?" },
   { "role": "assistant", "content": "The sky appears blue due to a phenomenon
called Rayleigh scattering. This occurs when sunlight enters Earth's atmosphere
and interacts with molecules of gases like nitrogen and oxygen." },
   { "role": "user", "content": "Can you explain more about how Rayleigh
scattering works?" }
 ],
  "stream": false
}'

在这个例子中:

第一条消息是用户询问"天空为什么是蓝色的"。
第二条消息是助手的初步回复, 解释了瑞利散射现象。
第三条消息是用户要求助手进一步解释瑞利散射的工作原理。
当发送这个请求时, 模型会考虑之前的所有消息, 然后生成一个新的助手回复, 进一步阐述瑞利散射。这样
就形成了一个多轮对话的流程。
你可以继续添加更多的用户和助手消息, 模拟一个完整的对话过程。每次请求, 模型都会基于所有历史消
息生成回复, 保持对话的连贯性。
这种多轮对话的交互方式更接近真实的聊天场景, 因为它保留了对话的上下文。模型可以根据之前的信息
来生成更加相关和自然的回复。
在命令行中, 如果命令太长或包含特殊字符, 直接执行可能会出现问题。 上面的修改后的示例的curl命令
没有返回回复。
让我们尝试另一种方法: 将JSON请求体保存到一个单独的文件中, 然后在curl命令中引用这个文件。
首先, 创建一个名为 request.json 的文件, 并将JSON请求体复制进去:

{
  "model": "llama3",
  "messages": [
   { "role": "user", "content": "Why is the sky blue?" },
   { "role": "assistant", "content": "The sky appears blue due to a phenomenon
called Rayleigh scattering. This occurs when sunlight enters Earth's atmosphere
and interacts with molecules of gases like nitrogen and oxygen." },
   { "role": "user", "content": "Can you explain more about how Rayleigh
scattering works?" }
 ],
  "stream": false
}

确保JSON格式正确, 并将文件保存。
然后, 修改curl命令, 使其引用这个文件:

curl -X POST -H "Content-Type: application/json" -d @request.json
http://localhost:11434/api/chat
-X POST : 指定HTTP方法为POST。
-H “Content-Type: application/json” : 设置请求头, 告诉服务器我们发送的是JSON格式的数
据。
-d @request.json : 读取 request.json 文件的内容作为请求体。
现在, 尝试执行这个修改后的curl命令。它应该可以正常工作, 向ollama的 /api/chat 端点发送请求, 并
json
http://localhost:11434/api/chat


- -X POST : 指定HTTP方法为POST。
- -H "Content-Type: application/json" : 设置请求头, 告诉服务器我们发送的是JSON格式的数
  据。
- -d @request.json : 读取 request.json 文件的内容作为请求体。

现在, 尝试执行这个修改后的curl命令。它应该可以正常工作, 向ollama的 /api/chat 端点发送请求, 并
接收到模型生成的回复。
Markdown 5744 字数 283 行数 当前行 1, 当前列 0HTML 4439 字数 167 段落
发布博文获得大额流量券
<think>好的,用户想在Linux环境下开发或部署智能问答系统。我需要根据提供的引用和已有的知识来构建回答。首先,用户提到的引用[1]是关于Windows部署MaxKB和Olama的,但用户问的是Linux,所以可能需要调整步骤。引用[2]是阿里云的相关服务,可能涉及云计算平台的使用。 首先,我应该考虑用户可能的两个方向:本地部署和云服务部署。本地部署可能需要使用开源框架,比如MaxKB、LangChain,或者Olama。云服务方面,阿里云DSW可能是个选项,需要指导用户如何在Linux上使用这些工具。 接下来,步骤需要分清楚。比如,本地部署可能需要安装Docker、拉取镜像、配置模型等。而云服务可能需要注册账号、创建实例、部署应用。同时,用户可能需要优化模型性能,比如量化模型或调整参数,这部分可以引用示例中的设备配置影响响应速度的内容。 另外,用户可能关心如何导入其他模型,比如中文模型,而引用中提到llama2是英文的,所以需要指导如何更换模型,比如使用Qwen或ChatGLM3。同时,性能优化方面,硬件配置越高越好,但Linux下可能有特定的优化方法,比如GPU加速、内存管理等。 还要注意生成相关问题,可能涉及部署工具的选择、性能优化、模型选择、云服务对比等。需要确保回答结构清晰,分步骤说明,并引用提供的资料适当标注。 最后,检查是否符合系统指令:使用正确LaTeX格式,中文回答,引用标记,相关问题和回答结构。可能需要确认是否有遗漏的步骤或错误的信息,比如Docker在Linux的安装命令是否正确,模型路径是否需要用户自行下载等。</think>### 如何在Linux上开发或部署智能问答系统 #### 、本地部署方案 1. **环境准备** - 安装Docker和Docker Compose(Linux环境下的基础工具): ```bash sudo apt-get update && sudo apt-get install docker.io docker-compose ``` - 拉取智能问答系统镜像(如MaxKB[^1]): ```bash docker pull registry.cn-beijing.aliyuncs.com/maxkb/maxkb:v1.0.0 ``` 2. **模型集成** - 使用Olama部署本地大模型(如Llama2): ```bash docker run -d -p 11434:11434 --name ollama ollama/ollama docker exec -it ollama ollama run llama2 ``` - **模型替换**:若需中文支持,可替换为Qwen或ChatGLM3,需下载模型文件并挂载到容器: ```bash docker run -v /path/to/qwen:/models -p 11434:11434 ollama/ollama ``` 3. **系统配置** - 修改MaxKB配置文件,关联模型服务地址: ```yaml # maxkb-config.yaml model_service: endpoint: http://localhost:11434 ``` 4. **启动服务** ```bash docker-compose -f maxkb-config.yaml up -d ``` --- #### 二、云服务部署方案(以阿里云为例[^2]) 1. **创建DSW实例** - 登录[阿里云DSW控制台](https://dsw-gateway.data.aliyun.com) - 选择GPU规格(如ecs.gn7i-c8g1.2xlarge) 2. **部署问答系统** ```bash git clone https://github.com/alibaba/llm-application-pipeline cd llm-application-pipeline && pip install -r requirements.txt ``` 3. **配置模型服务** ```python # config.py MODEL_PATH = "/mnt/data/qwen-7b-chat" API_PORT = 8090 ``` --- #### 三、性能优化建议 1. **硬件加速** - 启用NVIDIA GPU支持(需安装CUDA驱动): ```bash docker run --gpus all -it ollama/ollama ``` - 使用量化模型减少显存占用(如llama2-7b-q4) 2. **参数调优** ```python # 调整推理参数 generation_config = { "temperature": 0.7, "max_new_tokens": 512 } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值