基于ModelScope部署的百川大模型编写Django服务

 部署百川大模型

Linux环境下部署百度百川AI大模型-基于ModelScope-CSDN博客

步骤一:编写后台测试代码

cd /workspace/Baichuan2/

cp cli_demo.py cli.py

将cli.py代码修改为如下内容

import os
import torch
import platform
import subprocess
from colorama import Fore, Style
from tempfile import NamedTemporaryFile
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig


def init_model():
    print("init model ...")
    model = AutoModelForCausalLM.from_pretrained(
        "baichuan-inc/Baichuan2-13B-Chat",
        torch_dtype=torch.float16,
        device_map="auto",
        trust_remote_code=True
    )
    model.generation_config = GenerationConfig.from_pretrained(
        "baichuan-inc/Baichuan2-13B-Chat"
    )
    tokenizer = AutoTokenizer.from_pretrained(
        "baichuan-inc/Baichuan2-13B-Chat",
        use_fast=False,
        trust_remote_code=True
    )
    return model, tokenizer


def start(content):
    model, tokenizer = init_model()
    messages = []
    messages.append({"role": "user", "content": content})
    response = model.chat(tokenizer, messages)
    print(response)


if __name__ == "__main__":
    start("背诵一下将进酒")

注:编写思维参考 cli_demo.py与魔搭社区

测试代码

cd /workspace/Baichuan2/
python cli.py

结果如下: 

步骤二:下载依赖包

pip install django
pip install requests
pip install urllib3
pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

步骤三:创建django工程

cd /workspace/
django-admin startproject soft863ai
cd /workspace/soft863ai/
python manage.py startapp sourceai

步骤四:编写代码 

cd /workspace/soft863ai/sourceai/
mkdir model
cd model
touch baichuan.py
vi baichuan.py

在baichuan.py添加代码如下

import os
import torch
import platform
import subprocess
from colorama import Fore, Style
from tempfile import NamedTemporaryFile
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig


def init_model():
    print("init model ...")
    model = AutoModelForCausalLM.from_pretrained(
        "/workspace/Baichuan2/baichuan-inc/Baichuan2-13B-Chat",
        torch_dtype=torch.float16,
        device_map="auto",
        trust_remote_code=True
    )
    model.generation_config = GenerationConfig.from_pretrained(
        "/workspace/Baichuan2/baichuan-inc/Baichuan2-13B-Chat"
    )
    tokenizer = AutoTokenizer.from_pretrained(
        "/workspace/Baichuan2/baichuan-inc/Baichuan2-13B-Chat",
        use_fast=False,
        trust_remote_code=True
    )
    return model, tokenizer




def chat(content):
    model, tokenizer = init_model()
    messages = []
    messages.append({"role": "user", "content": content})
    response = model.chat(tokenizer, messages)
    return response



if __name__ == "__main__":
    print(chat("你是谁"))

测试代码

cd /workspace/soft863ai/sourceai/model/ 
python baichuan.py
cd /workspace/soft863ai/sourceai
vim views.py

修改/workspace/soft863ai/sourceai/views.py,代码如下

from django.shortcuts import render
from django.http import HttpResponse
from sourceai.model import baichuan
import json
# Create your views here.


def baichuan_to_create(request):
    print('进入后台..')
    context = request.GET.get('context', '您好')
    print('开始调用大模型..')
    result = baichuan.chat(context)
    print('执行完毕:',result)

    return HttpResponse(json.dumps({"res": result},ensure_ascii=False))

def first(request):
    print('进入后台测试')
    context = request.GET.get('context', '您好')
    result = context
    return HttpResponse(json.dumps({"res": result},ensure_ascii=False))
cd /workspace/soft863ai/soft863ai
vi urls.py

修改urls

"""
URL configuration for soft863ai project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/5.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from sourceai import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('first', views.first),
    path('baichuanto', views.baichuan_to_create),
]

步骤五:修改django配置

vi settings.py 

修改settings.py文件,第28行修改为

ALLOWED_HOSTS = ['dsw-gateway-cn-hangzhou.data.aliyun.com']

settings.py修改MIDDLEWAR内容如下

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

重点针对#'django.middleware.csrf.CsrfViewMiddleware',行注释掉

settings.py全部内容如下:

"""
Django settings for soft863ai project.

Generated by 'django-admin startproject' using Django 5.1.1.

For more information on this file, see
https://docs.djangoproject.com/en/5.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/5.1/ref/settings/
"""

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "django-insecure-3yd_k9_h(p&-ltq#$m&_8l_ebp7kcsa2wj_*ydpu*#s01w=ff("

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['dsw-gateway-cn-hangzhou.data.aliyun.com']


# Application definition

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
]

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    #"django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = "soft863ai.urls"

TEMPLATES = [
    {
        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [],
        "APP_DIRS": True,
        "OPTIONS": {
            "context_processors": [
                "django.template.context_processors.debug",
                "django.template.context_processors.request",
                "django.contrib.auth.context_processors.auth",
                "django.contrib.messages.context_processors.messages",
            ],
        },
    },
]

WSGI_APPLICATION = "soft863ai.wsgi.application"


# Database
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}


# Password validation
# https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
    },
    {
        "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
    },
]


# Internationalization
# https://docs.djangoproject.com/en/5.1/topics/i18n/

LANGUAGE_CODE = "en-us"

TIME_ZONE = "UTC"

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/5.1/howto/static-files/

STATIC_URL = "static/"

# Default primary key field type
# https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"

步骤六:启动django服务

cd /workspace/soft863ai/
python manage.py runserver 0.0.0.0:8090

步骤七:查看外网访问地址

点击启动后的超链接地址,访问外网

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

步骤八:测试后台服务

在浏览器后面拼接输入

baichuanto?context=写一篇大模型文章
https://dsw-gateway-cn-hangzhou.data.aliyun.com/dsw-651194/proxy/8090/baichuanto?context=写一篇大模型文章

上面地址仅是参照需要结合自己启动的对外端口号执行

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数智侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值