首页 > 其他分享 >ChatGLM3在Docker环境部署

ChatGLM3在Docker环境部署

时间:2024-03-27 16:22:22浏览次数:25  
标签:torch temperature 部署 top ChatGLM3 json DEVICE post Docker

ChatGLM3 docker部署

1. 下载项目到本地

git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3

这目录ChatGLM3下应该还需要包含chatglm3-6b-32k HuggingFace 或者 ModelScope ,需要手动下载。

2.制作Docker镜像

1)配置基础的Dockerfile:

#基于的基础镜像
FROM python:3.11.6
# 设置工作目录
WORKDIR /LLM
# 拷贝应用程序文件到容器中
COPY ./chatglm3-6b-32k/ /models/
COPY ./ChatGLM3/ /LLM/
# 安装支持
RUN pip install  -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
RUN pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

2)打包生成镜像

docker build -t dmx:easy .

3.启动容器

 docker run --restart=always -itd --name dmxApp3 -p 8000:8000 -w /LLM --gpus device=2 dmx:easy python LLM_Server.py

4.查看运行日志

docker logs -t dmxApp3

在这里插入图片描述

5. LLM_Server.py

from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from transformers import AutoTokenizer, AutoModel
from utils import load_model_on_gpus
import uvicorn, json, datetime
import os

import torch


DEVICE = "cuda"
DEVICE_ID = "0"
CUDA_DEVICE = f"{DEVICE}:{DEVICE_ID}" if DEVICE_ID else DEVICE


def torch_gc():
    if torch.cuda.is_available():
        with torch.cuda.device(CUDA_DEVICE):
            torch.cuda.empty_cache()
            torch.cuda.ipc_collect()


app = FastAPI()  # 创建API实例
app.add_middleware(
    CORSMiddleware,
    # 允许跨域的源列表,例如 ["http://www.example.org"] 等等,["*"] 表示允许任何源
    allow_origins=["*"],
    # 跨域请求是否支持 cookie,默认是 False,如果为 True,allow_origins 必须为具体的源,不可以是 ["*"]
    allow_credentials=False,
    # 允许跨域请求的 HTTP 方法列表,默认是 ["GET"]
    allow_methods=["*"],
    # 允许跨域请求的 HTTP 请求头列表,默认是 [],可以使用 ["*"] 表示允许所有的请求头
    # 当然 Accept、Accept-Language、Content-Language 以及 Content-Type 总之被允许的
    allow_headers=["*"],
    # 可以被浏览器访问的响应头, 默认是 [],一般很少指定
    # expose_headers=["*"]
    # 设定浏览器缓存 CORS 响应的最长时间,单位是秒。默认为 600,一般也很少指定
    # max_age=1000
)


@app.post("/")
async def create_item(request: Request):
    global model, tokenizer
    json_post_raw = await request.json()
    json_post = json.dumps(json_post_raw)
    json_post_list = json.loads(json_post)
    prompt = json_post_list.get('prompt')
    history = json_post_list.get('history')
    max_length = json_post_list.get('max_length')
    top_p = json_post_list.get('top_p')
    temperature = json_post_list.get('temperature')
    response, history = model.chat(tokenizer,
                                   prompt,
                                   history=history,
                                   max_length=max_length if max_length else 32760,
                                   top_p=top_p if top_p else 0.7,
                                   #top_p=top_p if top_p else 0.1,
                                   temperature=temperature if temperature else 0.95)
                                   #temperature=temperature if temperature else 0.1)

    now = datetime.datetime.now()
    time = now.strftime("%Y-%m-%d %H:%M:%S")
    answer = {
        "response": response,
        "history": history,
        "status": 200,
        "time": time
    }
    log = "[" + time + "] " + '", prompt:"' + prompt + '", response:"' + repr(response) + '"'
    print(log)
    torch_gc()
    return answer

if __name__ == '__main__':
    modelPath="models/"
    tokenizer = AutoTokenizer.from_pretrained(modelPath, trust_remote_code=True)
    model = AutoModel.from_pretrained(modelPath, trust_remote_code=True).cuda()
    model.eval()
    uvicorn.run(app, host='0.0.0.0', port=8000, workers=1)

标签:torch,temperature,部署,top,ChatGLM3,json,DEVICE,post,Docker
From: https://www.cnblogs.com/hcxss/p/18099570

相关文章

  • [Devops] ubuntu 重装 nvida-docker 驱动
    重装nvidia-docker2apt-getremovedockerdocker-enginedocker.iocontainerdruncapt-getinstallapt-transport-httpsca-certificatescurlgnupg-agentsoftware-properties-commoncurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-a......
  • 基于vite多页面实现多端同构开发和部署
    背景由于在开发前端项目中,后台管理端和用户端存在多个模块和页面逻辑可以复用,管理模块和用户端渲染模块使用同一套状态管理机制,只是在管理端和用户端的入口和路由模块不同,为了能够在开发时同时修改管理端和用户端共用模块,不用多项目工程修改和发布,我们基于vite多页面的基础上实现......
  • docker-运行jenkins服务
    环境说明linux系统版本:lsb_release-a docker版本:docker-v  不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。 最好是确认自己的服务器已经设置阿里云的镜像加速,或者使用腾讯的,网易的都是可以的。自己选,设置之后下载镜像的速度回快很多......
  • .net6 core web项目发布部署到IIS,以Windows服务的形式部署启动,报错1053,报1067错误解
    安装NuGet包Microsoft.Extensions.Hosting.WindowsServices  varbuilder=WebApplication.CreateBuilder(newWebApplicationOptions{ContentRootPath=AppContext.BaseDirectory,Args=args});//Addservicestothecontainer.builder.Services.Add......
  • Flink - [02] 安装部署(Standalone)
     一、准备1、角色规划FlinkStandalone角色规划节点名称node01node02node03master○  worker ○○zookeeper○○○   二、部署1、解压:tar-zxvfflink-1.11.2-bin-scala_2.11.tgz2、      — 要养成终生学习的习惯—......
  • sensitive-word-admin v1.3.0 发布 如何支持敏感词控台分布式部署?
    拓展阅读sensitive-word-adminv1.3.0发布如何支持分布式部署?sensitive-word-admin敏感词控台v1.2.0版本开源sensitive-word基于DFA算法实现的高性能敏感词工具介绍更多技术交流业务背景如果我们的敏感词部署之后,不会变化,那么其实不用考虑这个问题。......
  • openEuler20.03操作系统上安装部署MogDB2.1.1
    openEuler20.03操作系统上安装部署MogDB2.1.1本文出处:https://www.modb.pro/db/378319openEuler操作系统上安装mogdb:下载openEuler镜像文件:openEuler-20.03-LTS-x86_64-dvd.iso可以到各镜像源网站下载:例如:清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/openeule......
  • 手把手带你用RT-DETR模型部署训练自己的数据集
    本文主要介绍如何部署、训练RT-DETR模型,将从两种方式进行介绍:一种是RTDETR自带的项目文件,另一种是ultralytics仓库下将训练的模型改为rtdetr的基本模型。1.配置环境1.1新建虚拟环境我们可以在电脑上新建一个虚拟环境condacreate-nRT-DETRpython=3.10激活环境condaac......
  • 手工安装部署openGauss3.0一主一备(非om工具安装)
    手工安装部署openGauss3.0一主一备(非om工具安装)本文出处:https://www.modb.pro/db/425385一、操作系统配置(centos7.6)1.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld2.关闭selinux服务setenforce0vim/etc/selinux/configSELINUX=disabled3.......
  • 如何使用Docker安装Odoo 17
    目录概览前提条件使用DockerCompose安装Odoo17解释配置别忘了在config文件夹的odoo.conf文件里配置addons路径如何运行概览Odoo是一个全面的企业资源计划(ERP)和客户关系管理(CRM)软件,它提供了一个集成的解决方案,覆盖了销售、采购、库存、会计等多个业务领域。随着Odo......