A2. 大语言模型llama API服务调研

发布于:2025-02-10 ⋅ 阅读:(22) ⋅ 点赞:(0)

自然语言模型大家听的比较多的是OpenAI,它有聊天(Chat)、补全(Completion)、提取结果信息(Extract Result Information)、模拟聊天(Mock Chat)等功能;还有其它语言模型比如Google公司研发的mBERT (Multilingual BERT)、BERT (Bidirectional Encoder Representations from Transformers)、XLNet、ALBERT (A Lite BERT)、mBERT (Multilingual BERT)和T5 (Text-to-Text Transfer Transformer),Facebook研发的RoBERTa (Robust BERT)和LLaMA (Large Language Model Meta Architecture)等;这些语言模型所提供的能力都差不多,只是训练的侧重点有点区别,我们也可以基于这些模型基础上加强训练。今天介绍的这个模型是llama,它和OpenAI所提供的服务和能力类似,它是一个开源模型可以部署本地离线服务。那么下面我们一步一步跟进自建服务集成llama API应用与实战配置。

首页安装Ollama应用与其对应的模型

这步可参考我上一篇写的《A1.本地大模型Ollama 3.2部署》本地先搭建一个llama环境

配置OLLAMA_HOST主机地址

这里安装llama3.2后,如果环境变量未配置OLLAMA_HOST那么其API只能通过127.0.0.1或localhost地址访问(即http://127.0.0.1:11434)。局域网内其它主机均不能通过内网IP方式访问,这是因为默认情况下绑定的地址为listen 127.0.0.1:11434这种回环地址。到这里问题就清楚了我们只要将绑定地址改成0.0.0.0:11434(允许接收所有来源)即可

STEP 1 退出Ollama工具盒子

在这里插入图片描述

STEP 2 配置环境变量(这里以Mac为例,其它系统只要配置OLLAMA_HOST也一样的效果)

编辑.zshrc、.base_profile、.zprofile环境文件,将以下命令添加到配置文件最后一行
vim .zprofile

#0.0.0.0表示接收所有来源地址
#11434是llama默认的端口,如果想修改其它端口可在这里直接指定
export OLLAMA_HOST=0.0.0.0:11434

同时要设置应用启动时环境变量,在终端执行以下命令即可

launchctl setenv OLLAMA_HOST "0.0.0.0:11434"

这里我们针对OLLAMA_HOST设置做一下小结,为什么在配置了.zprofile之后还要通过launchctl命令再设置一遍。那是因为如果仅配置了.zprofile在终端只能通过ollama serve <模型名称>来启动,由当前终端shell fork出来一个进程,此时环境变量会继承.zprofile中设置的值,因此设置的值是有效的。而双击Ollama.app应用程序是通过Launch Service管理和启动的,不会读取.zprofile配置的环境变量,需要通过launchctl setenv来设置。因此需要两种方式都设置,这样不论双击启动还是终端启动OLLAMA_HOST绑定的0.0.0.0:11434值都会生效。

Ollama服务基础地址

服务基础地址(baseUrl)即是Ollama模型部署在那台机器或容器所对应的主机地址。如部署在本地那么baseUrl=http://127.0.0.1:11434或部署在某一台特定IP上主机那么baseUrl=http://IP:11434。至于端口可查看我前面写的《A1.本地大模型Ollama 3.2部署》文章以具体配置的为准,默认端口为11434。

官方Ollama API

https://github.com/ollama/ollama/blob/main/docs/api.md

REST API 0 查询Ollama工具盒子版本号

请求方式:GET
请求路径:/api/version
响应参数:

字段 描述
version ollama大模型工具盒子版本号

响应示例:

{
   
  "version": "0.5.1"
}
REST API 1 查询已有(有效)的模型集合

请求方式:GET
请求路径:/api/tags
响应参数(单个模型字段说明):

字段 描述
name 模型名称
modified_at 模型最后修改的时间戳
size 模型大小
digest 模型的校验和(digest),一个用于验证模型完整性的哈希值
details 模型的详细信息
|-- format 模型文件的格式
|-- family 模型家族
|-- families 模型家族列表,空表示没有其他相关家族信息
|-- parameter_size 模型参数的大小(能指的是某种量化级别的参数)
|-- quantization_level 模型的量化级别

响应示例:

{
   
  "models": [
    {
   
      "name": "codellama:13b",
      "modified_at": "2023-11-04T14:56:49.277302595-07:00",
      "size": 7365960935,
      "digest": "xxxx",
      "details": {
   
        "format": "gguf",
        "family": "llama",
        "families": null,
        "parameter_size": "13B",
        "quantization_level": "Q4_0"
      }
    }
  ]
}
REST API 2 查询已加载到内存(正在运行)的模型

请求方式:GET
请求路径:/api/ps
响应参数:参考REST API 1 查询已有(有效)的模型集合
响应示例:参考REST API 1 查询已有(有效)的模型集合

REST API 3 创建一个模型

请求方式:POST
请求路径:/api/create
请求参数:

参数名 描述
model 指定创建的模型名称
modelfile (可选):模型文件的内容
stream (可选)如果是false,响应将作为单个响应对象返回,而不是对象流
path (可选):模型文件的路径
quantize (可选):创建非量化(例如float16)模型 量化类型:q2_K、q3_K_L、q3_K_M、q3_K_S、q4_0、q4_1、q4_K_M、q4_K_S、q5_0、q5_1、q5_K_M、q5_K_S、q6_K、q8_0

请求示例:

//未指定量化参数quantize
curl baseUrl/api/create -d '{
  "model": "mario",
  "modelfile": "FROM llama3\nSYSTEM You are mario from Super Mario Bros."
}'

//已指定量化参数quantize
curl baseUrl/api/create -d '{
  "model": "llama3.1:quantized",
  "modelfile": "FROM llama3.1:8b-instruct-fp16",
  "quantize": "q4_K_M"
}'

响应参数:

字段 描述
status 创建模型过程中响应的状态 每个间段的状态:读取模型元数据、创建系统层、使用已经创建的层、写入层、写入清单、完成

响应示例(返回一个JSON对象流):

//未指定量化参数quantize
{
   "status":"reading model metadata"}
{
   

网站公告

今日签到

点亮在社区的每一天
去签到