部署百川大模型
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=写一篇大模型文章
上面地址仅是参照需要结合自己启动的对外端口号执行