部署自己的对话大模型,使用Ollama + Qwen2 +FastGPT 实现

news2024/11/18 9:46:46

部署资源

  • AUTODL 使用最小3080 资源,cuda > 12.0
  • 使用云服务器,部署fastGPT oneAPI,M3E 模型

操作步骤

  1. 配置代理
    export HF_ENDPOINT=https://hf-mirror.com
  2. 下载qwen2模型
    huggingface-cli download Qwen/Qwen2-7B-Instruct-GGUF qwen2-7b-instruct-q5_k_m.gguf --local-dir . --local-dir-use-symlinks False
  3. 创建模型文件
    FROM qwen2-7b-instruct-q5_k_m.gguf
    
    # set the temperature to 1 [higher is more creative, lower is more coherent]
    PARAMETER temperature 0.7
    PARAMETER top_p 0.8
    PARAMETER repeat_penalty 1.05
    TEMPLATE """{{ if and .First .System }}<|im_start|>system
    {{ .System }}<|im_end|>
    {{ end }}<|im_start|>user
    {{ .Prompt }}<|im_end|>
    <|im_start|>assistant
    {{ .Response }}"""
    # set the system message
    SYSTEM """
    You are a helpful assistant.
    """
    
  4. 导入模型
    ollama create qwen2:7b -f Modelfile
  5. 运行qwen2客户端
    ollama run qwen2-7b
  6. 运行m3e RAG模型
    version: '3'
    services:
      m3e_api:
        container_name: m3e_api
     
        environment:
          TZ: Asia/Shanghai
     
        image: registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
     
        restart: always
     
     
        ports:
          - "6200:6008"
    
  7. 运行fastAPI + oneAPI
    version: '3.3'
    services:
      # db
      pg:
        image: pgvector/pgvector:0.7.0-pg15 # docker hub
        # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云
        container_name: pg
        restart: always
        ports: # 生产环境建议不要暴露
          - 5432:5432
        networks:
          - fastgpt
        environment:
          # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
          - POSTGRES_USER=username
          - POSTGRES_PASSWORD=password
          - POSTGRES_DB=postgres
        volumes:
          - ./pg/data:/var/lib/postgresql/data
      mongo:
        image: mongo:5.0.18 # dockerhub
        # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
        # image: mongo:4.4.29 # cpu不支持AVX时候使用
        container_name: mongo
        restart: always
        ports:
          - 27017:27017
        networks:
          - fastgpt
        command: mongod --keyFile /data/mongodb.key --replSet rs0
        environment:
          - MONGO_INITDB_ROOT_USERNAME=myusername
          - MONGO_INITDB_ROOT_PASSWORD=mypassword
        volumes:
          - ./mongo/data:/data/db
        entrypoint:
          - bash
          - -c
          - |
            openssl rand -base64 128 > /data/mongodb.key
            chmod 400 /data/mongodb.key
            chown 999:999 /data/mongodb.key
            echo 'const isInited = rs.status().ok === 1
            if(!isInited){
              rs.initiate({
                  _id: "rs0",
                  members: [
                      { _id: 0, host: "mongo:27017" }
                  ]
              })
            }' > /data/initReplicaSet.js
            # 启动MongoDB服务
            exec docker-entrypoint.sh "$$@" &
    
            # 等待MongoDB服务启动
            until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do
              echo "Waiting for MongoDB to start..."
              sleep 2
            done
    
            # 执行初始化副本集的脚本
            mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js
    
            # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
            wait $$!
    
      # fastgpt
      sandbox:
        container_name: sandbox
        image: ghcr.io/labring/fastgpt-sandbox:latest # git
        # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:latest # 阿里云
        networks:
          - fastgpt
        restart: always
      fastgpt:
        container_name: fastgpt
        image: ghcr.io/labring/fastgpt:v4.8.9 # git
        # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.9 # 阿里云
        ports:
          - 3200:3000
        networks:
          - fastgpt
        depends_on:
          - mongo
          - pg
          - sandbox
        restart: always
        environment:
          # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
          - DEFAULT_ROOT_PSW=1234
          # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
          - OPENAI_BASE_URL=http://oneapi:3000/v1
          # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)
          - CHAT_API_KEY=sk-fastgpt
          # 数据库最大连接数
          - DB_MAX_LINK=30
          # 登录凭证密钥
          - TOKEN_KEY=any
          # root的密钥,常用于升级时候的初始化请求
          - ROOT_KEY=root_key
          # 文件阅读加密
          - FILE_TOKEN_KEY=filetoken
          # MongoDB 连接参数. 用户名myusername,密码mypassword。
          - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin
          # pg 连接参数
          - PG_URL=postgresql://username:password@pg:5432/postgres
          # sandbox 地址
          - SANDBOX_URL=http://sandbox:3000
          # 日志等级: debug, info, warn, error
          - LOG_LEVEL=info
          - STORE_LOG_LEVEL=warn
        volumes:
          - ./config.json:/app/data/config.json
    
      # oneapi
      mysql:
        # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云
        image: mysql:8.0.36
        container_name: mysql
        restart: always
        ports:
          - 3306:3306
        networks:
          - fastgpt
        command: --default-authentication-plugin=mysql_native_password
        environment:
          # 默认root密码,仅首次运行有效
          MYSQL_ROOT_PASSWORD: oneapimmysql
          MYSQL_DATABASE: oneapi
        volumes:
          - ./mysql:/var/lib/mysql
      oneapi:
        container_name: oneapi
        image: ghcr.io/songquanpeng/one-api:v0.6.7
        # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云
        ports:
          - 3001:3000
        depends_on:
          - mysql
        networks:
          - fastgpt
        restart: always
        environment:
          # mysql 连接参数
          - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi
          # 登录凭证加密密钥
          - SESSION_SECRET=oneapikey
          # 内存缓存
          - MEMORY_CACHE_ENABLED=true
          # 启动聚合更新,减少数据交互频率
          - BATCH_UPDATE_ENABLED=true
          # 聚合更新时长
          - BATCH_UPDATE_INTERVAL=10
          # 初始化的 root 密钥(建议部署完后更改,否则容易泄露)
          - INITIAL_ROOT_TOKEN=fastgpt
        volumes:
          - ./oneapi:/data
    networks:
      fastgpt:
    
  8. 编辑fastGPT 的模型配置
{
  "feConfigs": {
    "lafEnv": "https://laf.dev"
  },
  "systemEnv": {
    "vectorMaxProcess": 15,
    "qaMaxProcess": 15,
    "pgHNSWEfSearch": 100
  },
  "llmModels":[
    {
      "model": "qwen2:7b",
      "name": "qwen2",
      "avatar": "/imgs/model/openai.svg",
      "maxContext": 125000,
      "maxResponse": 4000,
      "quoteMaxToken": 120000,
      "maxTemperature": 1.2,
      "charsPointsPrice": 0,
      "censor": false,
      "vision": true,
      "datasetProcess": false,
      "usedInClassify": true,
      "usedInExtractFields": true,
      "usedInToolCall": true,
      "usedInQueryExtension": true,
      "toolChoice": true,
      "functionCall": false,
      "customCQPrompt": "",
      "customExtractPrompt": "",
      "defaultSystemChatPrompt": "",
      "defaultConfig": {}
    }
  ],
  "vectorModels": [
    {
      "model": "mxbai-embed-large",
      "name": "mxbai",
      "avatar": "/imgs/model/openai.svg",
      "charsPointsPrice": 0,
      "defaultToken": 512,
      "maxToken": 3000,
      "weight": 100
    },
    {
      "model": "m3e",
      "name": "M3E",
      "price": 0.1,
      "defaultToken": 500,
      "maxToken": 1800
    }
  ],
  "reRankModels": [],
  "audioSpeechModels": [
    {
      "model": "tts-1",
      "name": "OpenAI TTS1",
      "charsPointsPrice": 0,
      "voices": [
        { "label": "Alloy", "value": "alloy", "bufferId": "openai-Alloy" },
        { "label": "Echo", "value": "echo", "bufferId": "openai-Echo" },
        { "label": "Fable", "value": "fable", "bufferId": "openai-Fable" },
        { "label": "Onyx", "value": "onyx", "bufferId": "openai-Onyx" },
        { "label": "Nova", "value": "nova", "bufferId": "openai-Nova" },
        { "label": "Shimmer", "value": "shimmer", "bufferId": "openai-Shimmer" }
      ]
    }
  ],
  "whisperModel": {
    "model": "whisper-1",
    "name": "Whisper1",
    "charsPointsPrice": 0
  }
}
  1. 打开oneapi http://ip:3001, 初始密码 root 1234, 配置qwen2 模型以及M3E模型
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  2. 点击测试
    在这里插入图片描述
    • 注:M3E 点击测试后提示404是正常的
      在这里插入图片描述
  3. 重启fastgpt 和 oneapi
    docker-compose restart fastgpt oneapi
  4. 在fastgpt 中创建一个应用进行测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 大功告成!!!

从huggingface中直接下载,使用python直接部署为服务

  • https://github.com/datawhalechina/self-llm/blob/master/models/Qwen2/01-Qwen2-7B-Instruct%20FastApi%20%E9%83%A8%E7%BD%B2%E8%B0%83%E7%94%A8.md
  • fastAPI 部署模型对话服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter能赚钱,你还担心它被Google抛弃吗?

哈喽&#xff0c;我是老刘 Flutter自从诞生以来有很多的质疑和担心。 其中Flutter会不会被Google放弃是大家最重要的一个担心。 尤其是前段时间Flutter团队裁员后这种担心达到了顶点。 但是由LeanCode主导的一次针对Flutter的技术调查报告&#xff0c;应该能很大程度上解答这个…

为什么要分库分表

目录 为什么分库分表业务驱动分库分表优缺点优点缺点 如何分库分表分库分表原则分库多少合适分表多少合适分库分表字段选择逻辑 库或表不够怎么办数据归档 为什么分库分表 业务驱动 业务&#xff1a;增长快&#xff0c;业务复杂度高。系统流量疯狂增长&#xff0c;部分大表数…

[linux 驱动]i2c总线设备驱动详解与实战

目录 1 描述 2 结构体 2.1 bus_type 2.2 i2c_bus_type 2.2.1 i2c_device_match 2.2.2 i2c_device_probe 2.2.3 i2c_device_remove 2.2.4 i2c_device_shutdown 2.2 i2c_adapter 2.3 i2c_algorithm 2.4 i2c_driver 2.5 i2c_client 3 i2c核心 3.1 注册i2c适配器 3.2…

windows电脑怎么录屏?电脑录屏全攻略,轻松捕捉精彩瞬间

在数字化时代&#xff0c;屏幕录制已成为我们日常生活和工作中不可或缺的一部分。无论是记录游戏的高光时刻、制作教学视频&#xff0c;还是保存重要的在线会议内容&#xff0c;Windows电脑都为我们提供了多种高效便捷的录屏方式&#xff0c;如果你还不知道怎么录屏&#xff0c…

什么是领域驱动设计?

什么是领域驱动设计&#xff1f; 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;简称DDD&#xff09;是一种面向对象的软件开发方法&#xff0c;它强调将软件系统的设计和实现过程与业务领域紧密结合&#xff0c;通过深入理解和建模业务领域&#xff0c;从而实现高…

抓包工具检测手把手教学 - 某招聘网站

大家好&#xff0c;我是南枫~~~ 先问大家一个问题&#xff0c;你们有没有遇到过想爬一个网站&#xff0c;想用老方法&#xff0c;直接右键打开抓包工具&#xff0c;此时&#xff0c;突然&#xff01;整个页面都变得空白&#xff0c;什么数据都没有了的情况…… 如果你没遇到过…

探索MySQL视图的无限可能:优化查询、增强数据安全与简化数据访问

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

OpenAI发布o1预览模型:推理能力更强可达理科博士生水准

近日OpenAI宣布推出了新一代 AI 模型系列 OpenAI o1&#xff0c;按照官方技术博客说法&#xff0c;o1 在推理能力上代表了人工智能最强的水平。 那究竟是怎么一回事呢&#xff1f; OpenAI CEO Sam Altman 表示&#xff1a;o1 系列的推出代表了 AI 能力的新起点&#xff0c;能…

用Python设置PDF中图片的透明度

在PDF文档的设计与内容创作过程中&#xff0c;图像的透明度设置是一个重要的操作。尤其是在处理图文密集型PDF文档时&#xff0c;设置适当的图片透明度能够极大地提升视觉表达的层次感与专业性。设置PDF图像的透明度能够让图像更好地融入背景&#xff0c;实现平滑过渡的效果&am…

PAT甲级-1028 List Sorting

题目 题目大意 输入给出学生数目和C值&#xff0c;以及每个学生的信息。要求按照C值对学生信息作出不同的排序&#xff0c;如果C为1&#xff0c;就将学号升序排列&#xff1b;如果C为2&#xff0c;将学生姓名非递减排序&#xff1b;如果C为3&#xff0c;将学生分数非递减排序。…

SldWorks问题1: 在装配体中获取零件的面

问题 我为零件的某个面进行了命名&#xff0c;以此查找&#xff0c;进行配合。 在使用先前写好的查找方法时&#xff0c;有时会出现找不到的情况。 然后捣鼓了半天&#xff0c;发现&#xff1a; 只有当“零件文档显示的配置&#xff0c;和已放置的零件配置一致”时&#xff…

《C++PrimerPlus》第10章:类和对象

文章目录 文章介绍目录重点知识10.2 抽象和类10.3 类的构造函数和析构函数10.4 this指针10.5 对象数组10.6 类作用域 文章介绍 目录 重点知识 10.2 抽象和类 类开发人员&#xff1a;设计类 类调用人员&#xff1a;使用类 10.3 类的构造函数和析构函数 10.4 this指针 10.5 对…

微服务杂谈

几个概念 还是第一次听说Spring Cloud Alibaba &#xff0c;真是孤陋寡闻了&#xff0c;以前只知道 SpringCloud 是为了搭建微服务的&#xff0c;spring boot 则是快速创建一个项目&#xff0c;也可以是一个微服务 。那么SpringCloud 和 Spring boot 有什么区别呢&#xff1f;S…

dirty pages , swapiness 查看SWAP占用进程

文章说了这么多的意思 就是不要过度分配不用的内存。虽然脏块不会写入swap&#xff0c;但是占了物理内存&#xff0c;浪费空间&#xff0c;可能导致进行了很多不必要的交换&#xff08;虽然判断很少要进swap&#xff0c;判断要不要也要时间。。。&#xff09;。 To verify whic…

(机器学习必看视频)机器学习-吴恩达笔记汇总

最近将吴恩达老师在网易课程上的机器学习视频看了第二遍&#xff0c;同时整理了一下笔记&#xff0c;仅供学习实用&#xff0c;也放到了Github。主要是参考了下面几位大佬的书籍和作品&#xff0c;表示感谢&#xff01; 李航《统计学习方法》周志华 《机器学习》黄海广博士 ima…

NAS黑群晖7.21折腾笔记

黑群晖引导制作 https://post.smzdm.com/p/a96d62xe/ 黑群晖基本使用教程 https://www.bilibili.com/video/BV1A3411f7WK/?spm_id_from333.337.search-card.all.click 重点&#xff1a; 1&#xff0c;存储管理器 --创建存储池 RAID类型选择&#xff1a; 2&#xff0c…

【2024.08】图模互补:知识图谱与大模型融合综述-笔记

阅读目的&#xff1a;假设已有一个知识图谱&#xff0c;如何利用图谱增强模型的问答&#xff0c;如何检索知识图谱、知识图谱与模型的文本如何相互交互、如何利用知识图谱增强模型回答的可解释性。 从综述中抽取感兴趣的论文进一步阅读。 来源&#xff1a;图模互补&#xff1…

天下苦英伟达久矣!PyTorch官方免CUDA加速推理,Triton时代要来?

在做大语言模型(LLM)的训练、微调和推理时,使用英伟达的 GPU 和 CUDA 是常见的做法。在更大的机器学习编程与计算范畴,同样严重依赖 CUDA,使用它加速的机器学习模型可以实现更大的性能提升。 虽然 CUDA 在加速计算领域占据主导地位,并成为英伟达重要的护城河之一。但其他…

AV1 Bitstream Decoding Process Specification--[4]:语法结构

原文地址&#xff1a;https://aomediacodec.github.io/av1-spec/av1-spec.pdf没有梯子的下载地址&#xff1a;AV1 Bitstream & Decoding Process Specification摘要&#xff1a;这份文档定义了开放媒体联盟&#xff08;Alliance for Open Media&#xff09;AV1视频编解码器…

动态规划:汉诺塔问题|循环汉诺塔

目录 1. 汉诺塔游戏简介 2.算法原理 3.循环汉诺塔 1. 汉诺塔游戏简介 汉诺塔游戏是一个经典的数学智力游戏&#xff0c;其目标是将塔上不同大小的圆盘全部移动到另一个塔上&#xff0c;且在移动过程中必须遵守以下规则&#xff1a; 每次只能移动一个圆盘较大的圆盘不能放在…