基于FlagRelease平台适配的多芯版大模型做AI应用开发
目录
1: 引言
2:工具简介:FlagRelease\魔乐社区\Gradio
3:环境准备
4:AI对话助手应用设计
5:步骤一:注册和配置魔乐社区账户
6:步骤二:选择合适的大语言模型
7:步骤三:创建Gradio应用
8:步骤四:部署应用到魔乐社区
9:应用测试与优化
10:常见问题与解决方案
01 引言
在人工智能技术飞速发展的今天,对话已从简单的信息传递演变为和AI之间深度交互的智慧体验。无论是日常沟通、知识获取还是创意激发,AI对话助手都能以更自然、更高效的方式帮助我们使用大语言模型。
本教程中,我们将详细介绍如何利用大模型自动迁移发版工具FlagRelease、魔乐社区(Modelers.cn)平台和Gradio框架创建并部署一个AI对话助手应用。通过这个应用,用户可以自行调整系统提示词、输出长度、TopP、TopK等参数,相比对话产品可以更加灵活地调整自己需要的模型风格。
由信通院指导的,智源研究院联合魔乐社区协办的“2025年全国高性能云计算创新大赛—AI应用打榜赛”已经开启。诚邀全球开发者加入本次「AI创新应用线上打榜赛」,基于FlagRelease平台上适配了多种芯片架构的主流大模型,探索国产算力潜能,充分释放AI能量。
02 工具简介
◆FlagRelease平台
大模型自动迁移发版平台FlagRelease,是依托开源、统一系统软件栈FlagOS 生态下 FlagGems、FlagTree、FlagScale 和 FlagCX 等开源核心技术,提供一站式自动迁移并发版多种硬件架构版本大模型的工具平台。该平台已对外完成 10+ 主流大模型在 10+ 不同硬件架构的适配迁移。只需轻松几步,即可在 FlagRelease 平台完成开源模型的国产硬件适配。
◆魔乐社区(Modelers.cn)
魔乐社区(Modelers.cn)是一个中立、公益的人工智能开源社区,提供模型托管、应用部署、数据集管理、适配协同等功能。作为国内领先的AI开放社区,社区支持开发者上传和分享自己的AI模型,并提供免费的NPU算力资源,大大降低了AI应用开发和部署的门槛。
魔乐社区的主要特点包括:
• 丰富的模型库:包含各类AI模型,涵盖计算机视觉、自然语言处理等多个领域
• 免费的算力资源:提供NPU算力,支持模型训练和推理
• 便捷的应用部署:支持多种应用部署方式,包括Gradio等
• 完善的社区支持:开发者可以相互学习、交流和协作
◆Gradio框架
Gradio是一个Python库,专为机器学习模型创建用户友好的Web界面而设计。它允许开发者以极低的代码成本快速构建交互式应用,使非技术用户也能够轻松使用复杂的AI模型。
Gradio的优势包括:
• 简单易用:只需几行Python代码即可创建交互式界面
• 灵活多样的组件:提供文本框、图像上传、滑块等多种界面组件
• 实时交互:支持用户实时与模型交互,并立即获得反馈
• 易于分享:生成可分享的链接,方便分享应用给他人
• 定制性强:可以根据需求定制界面外观和功能
在魔乐社区中,Gradio是创建和部署交互式AI应用的首选工具之一,它与平台的集成使得开发者可以轻松地将自己的模型转化为可用的应用服务。 开发者在选择应用模型时,也可借助FlagRelease平台提供的适配了多种芯片硬件的开源模型。
03 环境准备
接下来,我们以一个AI对话助手应用为例,手把手教你如何从0搭建一个应用并部署在魔乐社区供大家使用。在开始创建我们的AI对话助手应用之前,需要确保已经准备好所需的环境和工具。本节将详细介绍环境准备的步骤。
Python环境配置
首先,确保您的系统已安装Python 3.8/3.9/3.10,其它版本可能不兼容(可从创建空间的环境选项中查看兼容的版本)。推荐使用conda或venv等工具创建虚拟环境,以避免依赖冲突。
# 使用conda创建虚拟环境
conda create -n dialog-nexus python=3.10
conda activate dialog-nexus
# 或使用venv创建虚拟环境
python -m venv dialog-nexus
# 在Windows上激活
dialog-nexus\Scripts\activate
# 在Linux/Mac上激活
source dialog-nexus/bin/activate
安装必要的依赖包
我们需要安装以下依赖包:
# 安装Gradio
pip install gradio
# 安装openmind客户端,用于访问魔乐社区的模型
pip install openmind_hub openmind[pt]
# 安装其他可能需要的库
pip install tqdm requests torch torchvision transformers
开发工具准备
选择一个合适的代码编辑器或IDE进行开发,例如:
• Visual Studio Code(推荐,轻量级且有丰富的扩展)
• PyCharm(功能全面的Python IDE)
• Jupyter Notebook(适合交互式开发和测试)
魔乐社区账号准备
在正式开始开发之前,您需要:
注册魔乐社区(Modelers.cn)账号
熟悉魔乐社区的基本功能和界面
创建并获取API访问令牌(Token),用于程序中访问模型和服务
通过以上步骤,我们就完成了开发环境的基本配置。接下来,我们将设计AI对话助手应用的功能和界面。
04 AI对话助手应用设计
在开始编码之前,我们需要明确应用的功能需求和设计规划,为后续的开发工作打下基础。
应用功能需求
我们的AI对话助手应用将具备以下功能:
1.输入框:用户可以输入期望的内容
2.推荐问题:用户选择感兴趣的问题进行提问
3.高级参数选项:
System prompt:控制大模型的全局规则和人设
Max new tokens:调整输出的最大长度
Temperature:调整模型输出偏创意还是偏严谨
TopP:调整模型输出结果的多样性
TopK:调整模型输出结果的多样性
Repetition penalty:抑制模型输出重复内容
界面设计
基于上述功能需求,我们将使用Gradio设计一个直观的用户界面:
1.主标题区:应用名称和简短描述
2.推荐问题区:用于选择推荐问题
3.参数设置区:
System prompt:输入框
Max new tokens:调节滑块
Temperature:调节滑块
TopP:调节滑块
TopK:调节滑块
Repetition penalty:调节滑块
4.对话区域:
输出框
发送消息按钮
5.结果展示区:
推荐问题区部分转为模型返回结果展示
技术架构
我们的应用将采用以下技术架构:
1.前端:
Gradio提供的Web界面组件
用户交互逻辑
2.后端:
Python处理核心
魔乐社区模型调用接口,其中FlagRelease平台适配了多芯片版的模型调用,可使用OpenAI格式的API脚本与模型交互
文本处理逻辑
3.模型层:
魔乐社区提供的大语言模型
tokenizer解码器模型
4.数据流:
用户发送消息 → 预处理 → 模型处理 → 后处理 → 结果展示
通过这样的设计,我们的应用不仅功能丰富,而且用户友好,能够满足各种对话场景的需求。
05 步骤一:注册和配置魔乐账户
开发我们的应用之前,首先需要注册并配置魔乐社区账户。本节将详细介绍这个过程。
注册魔乐社区账户
1.访问魔乐社区官网:https://modelers.cn/
2.点击页面右上角的"注册"按钮
3.填写注册表单,包括用户名、邮箱和密码
4.验证邮箱并完成注册流程
创建访问令牌(API Token)
为了在应用中调用魔乐社区的模型和服务,我们需要创建一个访问令牌(Token):
1.登录魔乐社区账户
2.点击右上角头像,选择"个人中心"
3.在左侧菜单中找到并点击"访问令牌"
4.点击"创建令牌"按钮
5.填写令牌名称(如"AI对话助手应用")
6.选择需要的权限范围("read"和“write”权限需分开申请)
7.点击"创建"按钮
8.保存生成的令牌字符串,我们将在后续的代码中使用它
熟悉魔乐社区界面和功能
在开发应用之前,建议您花一些时间熟悉魔乐社区的各项功能:
• 模型库:浏览可用的AI模型,了解它们的功能和使用方法
• 数据集:了解如何上传和管理数据集
• 体验空间:查看其他开发者创建的应用,获取灵感
• 文档中心:阅读平台文档,了解API使用方法和最佳实践
配置开发环境连接魔乐社区
在我们的Python环境中,需要配置openmind_hub以连接魔乐社区:
# 安装openmind客户端(如果尚未安装)
# pip install openmind_hub
# 下载文件
from openmind_hub import om_hub_download
om_hub_download(repo_id="PyTorch-NPU/t5_small", filename="config.json")
# 上传文件
from openmind_hub import upload_folder
upload_folder(
repo_id="owner/repo",
folder_path="./folder_to_upload",
token="xxx",
)
# token:对目标仓库具有write权限的访问令牌,必选。
# repo_id:文件要上传到的仓库,必选。
# folder_path:要上传目录的绝对路径或相对路径,上传的内容不包含该目录本身,必选。支持字符串或Path类型,如:"./folder"或Path("./folder")。
通过以上步骤,我们已经成功注册并配置了魔乐社区账户,为后续开发做好了准备。
06 步骤二:选择合适的大语言模型
选择合适的AI模型是构建高质量应用的关键。在魔乐社区中,有多种大语言模型可供选择。本节将帮助您了解这些模型并选择最适合您需求的一个。
FlagRelease/Qwen3-4B-FlagOS-Meta权重地址:https://modelers.cn/models/FlagRelease/Qwen3-4B-FlagOS-Metax FlagRelease/Qwen3-4B-FlagOS-Ascend权重地址:https://modelers.cn/models/FlagRelease/Qwen3-4B-FlagOS-Ascend
FlagRelease/Qwen3-4B-FlagOS-Meta/Ascend: 深度适配多种国产算力的千问系列小模型,适合用魔乐社区提供的免费昇腾、沐曦跑一下模型 性能可媲美前代Qwen2.5-72B-Instruct 适合端侧部署
选择及下载模型
基于我们的应用通用性强、兼顾速度的需求,我们决定采用千问系列模型,此处推荐Qwen3-4B,具体介绍下这两个模型。
Qwen3-4B-FlagOS-Metax/Ascend
FlagOS 是由硬件平台、深度学习框架平台、非营利性组织、科研机构等十多家国内外机构共同发起并创立的,面向多种芯片的统一、开源 AI 系统软件栈生态。FlagOS 系统软件栈采用“4+2”模式,4个开源核心库包括高性能通用算子库 FlagGems、多后端统一 AI 编译器 FlagTree、并行训推一体框架 FlagScale 和统一通信库 FlagCX;2个开源工具包括大模型自动迁移发版平台 FlagRelease 和大模型评测平台 FlagPerf 。
模型 Qwen3-4B-FlagOS-Metax和 Qwen3-4B-FlagOS-Ascend 是基于 FlagOS 系统软件栈把 Qwen3-4B 在 Metax 和 Ascend 硬件上的适配,具体实现方式如下。
一体化集成:
• 深度集成FlagScale开源框架(https://github.com/FlagOpen/FlagScale)
• 提供开箱即用的推理执行代码,预置完整的软硬件配置参数
• 发布FlagOS专用镜像,支持分钟级快速部署
一致性验证:
通过严格的评估测试验证:公开在多个先进评测数据集上,FlagOS软件栈与原生软件栈的结果对比。
技术概要
FlagScale 分布式训推框架:FlagScale 是面向异构算力的跨芯片大模型端到端框架,通过核心技术实现计算资源效率最大化与模型有效性保障。其核心优势包括:
统一化部署接口:提供标准化命令行工具,支持多硬件平台一键式服务部署,显著降低异构环境适配成本。
智能并行优化:基于芯片算力特征自动生成最优分布式并行策略,实现计算/通信资源的动态负载均衡。
无缝算子切换:深度集成 FlagGems 算子库,通过环境变量配置即可调用高性能算子,无需修改模型代码。
FlagGems 通用大模型算子库:FlagGems 联合产业生态共建的基于 Triton 的跨架构算子库,具备以下核心特性:
• 全栈覆盖:算子总数超过180个,且算子类型的广度远超同类竞品。
• 生态兼容性:目前支持10种加速器后端,经过持续优化,性能加速比提升显著。
• 生态兼容性:采用独特的代码生成优化及运行时优化技术,二次开发效率及运行时性能优于同类项目。
Flageval评测框架:FlagEval是2023年推出的大模型评测体系及开放平台,致力于建立科学、公正、开放的评测基准、方法及工具集,旨在协助研究人员全面评估基础模型及训练算法的性能。
• 多维度评估:支持NLP/CV/Audio/Multimodal四大领域800+模型评测,涵盖语言理解、图文生成等20+下游任务。
• 产业级应用:累计完成国内外主流大模型横向评测,为芯片-模型组合的效能验证提供权威基准。
🔷基础信息
🔷操作步骤
- 下载模型权重
安装openmind_hub
pip install openmind_hub
下载Qwen3-4B模型
from openmind_hub import snapshot_download
local_dir = "/shared/Qwen3-4B" #模型下载到本地的路径
snapshot_download(
repo_id="FlagRelease/Qwen3-4B-FlagOS-Metax", # 模型仓库ID(组织/模型名)
token="your token", # 认证令牌(需替换为真实token)
repo_type="model", # 仓库类型为模型
cache_dir=local_dir, # 指定缓存/下载目录
resume_download=True # 支持断点续传
)
- 下载 FlagOS 镜像
#沐曦镜像拉取
docker pull flagrelease-registry.cn-beijing.cr.aliyuncs.com/flagrelease/flagrelease:flagrelease_metax_qwen3
#昇腾镜像拉取
docker pull flagrelease-registry.cn-beijing.cr.aliyuncs.com/flagrelease/flagrelease:flagrelease_ascend_qwen3_4b
- 启动推理服务
沐曦:进入容器并启动服务
#Container Startup
docker run -it --device=/dev/dri --device=/dev/mxcd --group-add video \
--name flagos --device=/dev/mem --network=host \
--security-opt seccomp=unconfined --security-opt apparmor=unconfined \
--shm-size '100gb' --ulimit memlock=-1 \
-v /usr/local/:/usr/local/ -v /nfs:/nfs \
flagrelease-registry.cn-beijing.cr.aliyuncs.com/flagrelease/flagrelease:flagrelease_metax_qwen3 /bin/bash
#Service Initialization
flagscale serve qwen3
# 服务启动后,您将看到类似输出:
#INFO: Started server process [392]
#INFO: Waiting for application startup.
#INFO: Application startup complete.
昇腾:进入容器并启动服务
#Container Startup
docker run -itd --name flagos \
-u root \
-w /workspace \
--privileged=true \
--shm-size=1000g \
--net=host \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/sbin:/usr/local/sbin \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /data:/data \
-v /root/.cache:/root/.cache \
-e VLLM_USE_V1=1 \
-e CPU_AFFINITY_CONF=2 \
-e PYTORCH_NPU_ALLOC_CONF=max_split_size_mb:256 \
-e USE_FLAGGEMS=true \
flagrelease-registry.cn-beijing.cr.aliyuncs.com/flagrelease/flagrelease:flagrelease_ascend_qwen3_4b bash
#Enter the container
docker exec -it flagos bash
#Special configuration is required
source /usr/local/Ascend/ascend-toolkit/set_env.sh && source /usr/local/Ascend/nnal/atb/set_env.sh
#Service Initialization
flagscale serve qwen3
# 服务启动后,您将看到类似输出:
#INFO: Started server process [392]
#INFO: Waiting for application startup.
#INFO: Application startup complete.
- 模型调用方式
FlagRelease平台上适配了多种芯片架构的大模型,支持两种方式调用,一种是 API 调用方式,一种是利用 AnythingLLM 应用程序调用。
API 调用方法
(1)Python客户端调用:
import openai
# 设置API参数
openai.api_key = "EMPTY" # 无需真实API密钥
openai.base_url = "http://<服务器IP>:9010/v1/" # 替换为实际服务器IP
# 定义对话
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What's the weather like today?"}
]
# 调用API
try:
response = openai.chat.completions.create(
model="Qwen3-4B-metax-flagos", # 昇腾模型替换为“Qwen3-4B-ascend-flagos”
messages=messages,
temperature=0.7, # 控制回答随机性(0-1)
top_p=0.95, # 控制回答多样性
stream=False, # 是否流式输出
)
# 打印完整响应
print(response.choices[0].message.content)
except Exception as e:
print(f"API调用出错: {e}")
(2)使用CURL命令行调用:
curl -X POST http://<服务器IP>:9010/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-4B-metax-flagos",#昇腾版本则选择相应模型权重地址
"messages": [
{"role": "system", "content": "你是一个乐于助人的助手。"},
{"role": "user", "content": "请用简单的语言解释量子计算的基本概念"}
],
"temperature": 0.7,
"top_p": 0.95
}'
AnythingLLM调用指南
(1)本地下载安装AnythingLLM:
访问官方下载页面:https://anythingllm.com/;选择与您操作系统匹配的版本(Windows/macOS/Linux);完成下载后,按照安装向导进行安装
(2) 配置AnythingLLM连接FlagOS:
启动AnythingLLM应用程序,并进行基础配置入口
(3)在LLM Provider中选择"Generic OpenAI"
(4)使用AnythingLLM与模型交互
点击"New Conversation"创建新会话,在输入框键入您的问题(示例:"请解释量子计算的基本原理"),点击发送按钮获取模型响应。
07 步骤三:创建Gradio应用
在本节中,我们将使用Gradio框架创建一个交互式的AI对话助手应用界面。Gradio的简洁API允许我们用少量代码快速构建功能丰富的Web应用。
导入所需库和模型
import gradio as gr
import numpy as np
import cv2
from PIL import Image
import os
import time
from modelscope.pipelines import pipeline
from modelscope.outputs import OutputKeys
from modelscope.utils.constant import Tasks
# 加载预先下载的模型
restoration_model_dir = 'models/damo/cv_resnet50_old-photo-restoration'
colorization_model_dir = 'models/damo/cv_ddcolor_image-colorization'
# 初始化模型管道
restoration_pipeline = pipeline(
task=Tasks.old_photo_restoration,
model=restoration_model_dir
)
colorization_pipeline = pipeline(
task=Tasks.image_colorization,
model=colorization_model_dir
)# 导入必要的库和模块
import os # 操作系统相关功能
from threading import Thread # 用于创建线程实现并行处理
from typing import Iterator, List, Tuple # 类型提示,增强代码可读性
# 导入Gradio库用于创建Web界面
import gradio as gr
# 导入PyTorch用于深度学习模型操作
import torch
# 导入OpenMind模型和分词器
from openmind import AutoModelForCausalLM, AutoTokenizer
# 导入文本流式输出工具
from transformers import TextIteratorStreamer
# 定义应用描述信息,用于在界面上显示
DESCRIPTION = """
# Qwen3-0.6B 聊天机器人
这是一个基于 MindIE/Qwen3-0.6B 模型的聊天应用。
## 功能特点
- 支持流式输出
- 可调节生成参数
- 提供系统提示词自定义
"""
# 设置模型生成参数的最大值和默认值
MAX_MAX_NEW_TOKENS = 2048 # 生成文本的最大token数量上限
DEFAULT_MAX_NEW_TOKENS = 1024 # 默认生成的token数量
MAX_INPUT_TOKEN_LENGTH = 4096 # 输入文本的最大token长度
MAX_HISTORY_LENGTH = 5 # 限制历史对话的长度,防止上下文过长
# 设置设备为NPU(神经处理单元)
device = torch.device('npu:0')
# 指定要使用的模型名称
model_name = 'zhouhui/Qwen2-0.5B-ITA-Instruct'
# 加载预训练模型并移至指定设备
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True).to(device)
# 加载对应的分词器
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
# 禁用默认系统提示词,使用自定义系统提示
tokenizer.use_default_system_prompt = False
定义模型处理函数
接下来,我们需要定义处理对话的主函数,它将接收用户发送的对话和各种参数,并返回处理后的结果:
# 定义文本生成函数
def generate(
message: str, # 用户输入的消息
chat_history: List[Tuple[str, str]], # 聊天历史记录,格式为[(用户消息, 助手回复), ...]
system_prompt: str, # 系统提示词,用于指导模型行为
max_new_tokens: int = 1024, # 生成的最大token数量
temperature: float = 0.6, # 温度参数,控制生成文本的随机性
top_p: float = 0.9, # 核采样参数,控制生成文本的多样性
top_k: int = 50, # 保留概率最高的k个token
repetition_penalty: float = 1.2, # 重复惩罚系数,防止生成重复内容
) -> Iterator[str]: # 返回字符串迭代器,用于流式输出
# 限制历史记录的长度,防止上下文过长
if len(chat_history) > MAX_HISTORY_LENGTH:
chat_history = chat_history[-MAX_HISTORY_LENGTH:]
# 构建对话格式
conversation = []
# 如果有系统提示词,添加到对话开头
if system_prompt:
conversation.append({"role": "system", "content": system_prompt})
# 添加历史对话记录
for user, assistant in chat_history:
conversation.extend([{"role": "user", "content": user}, {"role": "assistant", "content": assistant}])
# 添加当前用户输入
conversation.append({"role": "user", "content": message})
# 将对话转换为模型输入格式
input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt")
# 如果输入长度超过最大限制,则截断
if input_ids.shape[1] > MAX_INPUT_TOKEN_LENGTH:
input_ids = input_ids[:, -MAX_INPUT_TOKEN_LENGTH:]
gr.Warning(f"Trimmed input from conversation as it was longer than {MAX_INPUT_TOKEN_LENGTH} tokens.")
# 将输入数据移至模型所在设备
input_ids = input_ids.to(model.device)
# 创建文本流式输出器
streamer = TextIteratorStreamer(tokenizer, timeout=10.0, skip_prompt=True, skip_special_tokens=True)
# 设置生成参数
generate_kwargs = {
"input_ids": input_ids,
"streamer": streamer,
"max_new_tokens": max_new_tokens,
"do_sample": True, # 启用采样
"top_p": top_p,
"top_k": top_k,
"temperature": temperature,
"num_beams": 1, # 设置为1表示不使用束搜索
"repetition_penalty": repetition_penalty,
}
)
# 创建新线程运行模型生成,避免阻塞主线程
t = Thread(target=model.generate, kwargs=generate_kwargs)
t.start()
# 流式输出生成的文本
outputs = []
for text in streamer:
outputs.append(text)
yield "".join(outputs) # 逐步返回生成的文本
创建Gradio界面
现在,让我们使用Gradio创建一个交互式界面:
# 创建Gradio聊天界面
chat_interface = gr.ChatInterface(
fn=generate, # 指定生成函数
additional_inputs=[ # 添加额外的输入控件
gr.Textbox(label="System prompt", lines=6), # 系统提示词输入框
gr.Slider( # 最大生成token数量滑块
label="Max new tokens",
minimum=1,
maximum=MAX_MAX_NEW_TOKENS,
step=1,
value=DEFAULT_MAX_NEW_TOKENS,
),
gr.Slider( # 温度参数滑块
label="Temperature",
minimum=0.1,
maximum=4.0,
step=0.1,
value=0.6,
),
gr.Slider( # Top-p参数滑块
label="Top-p (nucleus sampling)",
minimum=0.05,
maximum=1.0,
step=0.05,
value=0.9,
),
gr.Slider( # Top-k参数滑块
label="Top-k",
minimum=1,
maximum=1000,
step=1,
value=50,
),
gr.Slider( # 重复惩罚参数滑块
label="Repetition penalty",
minimum=1.0,
maximum=2.0,
step=0.05,
value=1.2,
),
],
stop_btn=None, # 不显示停止按钮
examples=[ # 预设的示例问题
["作为程序员该如何防止脱发?"],
["请给我简短的介绍一下python语言的历史?"],
["写一篇关于'如何参与到开源贡献社区'的博客"],
["给我一份自驾游西藏的攻略"],
["写一篇赞美老师的诗词"],
],
cache_examples=False, # 不缓存示例结果
)
# 定义CSS样式
css = """
/* 标题样式 */
h1 {
text-align: center;
display: block;
}
/* 复制按钮样式 */
#duplicate-button {
margin: auto;
color: white;
background: #1565c0;
border-radius: 100vh;
}
/* 容器样式 */
.contain {
max-width: 900px;
margin: auto;
padding-top: 1.5rem;
}
"""
# 创建Gradio应用界面
with gr.Blocks(css=css, fill_height=True) as demo:
gr.Markdown(DESCRIPTION) # 显示应用描述
chat_interface.render() # 渲染聊天界面
# 程序入口点
if __name__ == "__main__":
demo.queue(max_size=20).launch() # 启动应用,设置队列大小为20
实际效果体验
此时,我们已经创建了一个功能完整的AI对话助手Gradio应用。它提供了直观的界面,允许用户轻松开启对话、设置参数、查看模型的效果。该应用集成了魔乐社区的大语言模型,实现了多样化的对话能力。
在本地运行应用后,我们可以在http://localhost:7860访问它并测试所有功能。下一步,我们将把这个应用部署到魔乐社区,让更多用户能够使用它。
08 步骤四:部署应用到魔乐社区
现在我们已经创建了一个功能完整的Gradio AI对话助手应用,接下来要将它部署到魔乐社区,让其他用户可以在线使用。本节将详细介绍如何在魔乐社区创建和部署Gradio应用。
准备应用文件
在部署之前,我们需要准备以下文件,并组织成合适的目录结构:
1.app.py:主应用代码文件
2.requirements.txt:依赖库列表
3.README.md:应用说明文档
requirements.txt 文件内容:
gradio>=4.0.0 transformers>=4.30.0 openmind_hub>=0.1.0 torch>=2.0.0 openmind[pt] peft>=0.15.2 #使用qwen3时需要
README.md 文件内容:
# Qwen 中文对话模型应用
这是一个基于 Qwen 系列模型的中文对话应用,使用 Gradio 构建的交互式 Web 界面,支持流式输出和参数调节。
## 项目简介
本项目利用 OpenMind 框架和 Qwen 系列模型,构建了一个功能完善的中文对话应用。通过简洁的 Web 界面,用户可以与 AI 模型进行自然的对话交互,体验类似 ChatGPT 的对话能力。
## 功能特点
- 流式输出 :实时显示模型生成的文本,提供更好的用户体验
- 参数调节 :支持调整温度、Top-p、Top-k 等生成参数,满足不同场景需求
- 系统提示词 :可自定义系统提示词,引导模型行为
- 历史对话 :自动保存对话历史,支持上下文理解
- 预设示例 :内置多个对话示例,方便快速体验
## 技术栈
- 模型 :Qwen2-0.5B-ITA-Instruct (OpenMind 框架)
- 前端 :Gradio 界面框架
- 后端 :Python + PyTorch
- 硬件加速 :支持 NPU 设备
## 安装说明
### 环境要求
- Python 3.8 或更高版本
- NPU 设备支持(可选,也支持 CPU/GPU 运行)
### 安装步骤
1. 克隆本仓库:
```
git clone <仓库地址>
cd photo_restoration
```
2. 安装依赖:
```
pip install -r requirements.txt
```
## 使用方法
1. 启动应用:
```
python app.py
```
2. 在浏览器中访问显示的地址(默认为 http://127.0.0.1:7860 )
3. 在对话框中输入问题,点击发送按钮开始对话
4. 可以通过界面右侧的控制面板调整生成参数:
- System prompt :设置系统提示词,引导模型行为
- Max new tokens :控制生成文本的最大长度
- Temperature :控制生成文本的随机性(值越高,回答越多样)
- Top-p :控制词汇采样范围
- Top-k :控制每步保留的最高概率词数量
- Repetition penalty :控制重复惩罚系数,避免文本重复
## 示例问题
应用内置了以下示例问题,可直接点击体验:
- 作为程序员该如何防止脱发?
- 请给我简短的介绍一下python语言的历史?
- 写一篇关于'如何参与到开源贡献社区'的博客
- 给我一份自驾游西藏的攻略
- 写一篇赞美老师的诗词
## 自定义配置
如果您的环境不支持 NPU,可以修改 app.py 中的设备配置:
```
# 修改为 CPU
device = torch.device('cpu')
# 或修改为 GPU (如果有CUDA支持)
device = torch.device('cuda:0')
```
## 依赖列表
- gradio >= 4.0.0
- transformers >= 4.30.0
- openmind_hub >= 0.1.0
- torch >= 2.0.0
- openmind[pt]
- peft >= 0.15.2
## 注意事项
- 首次运行时会下载模型,可能需要一些时间
- 模型生成的内容仅供参考,不代表开发者观点
- 在资源有限的设备上,建议适当降低参数值以提高响应速度
## 许可证
[请在此处添加您的许可证信息]
## 贡献指南
欢迎提交 Issue 或 Pull Request 来帮助改进这个项目!
注:本项目仅用于学习和研究目的,请勿用于商业用途。
准备好四个文件后,采用git同步到你创建好的应用git库中,魔乐社区会自动检察文件上传和更新,完成构建:
git add .
git commit -m “ 提交信息”
git remote remove origin
git remote add origin main
git push -u origin main
可以看到体验空间显示构建中,可以在日志中看到构建进度。
09 应用测试与优化
构建完成后,可以看到如下界面,代表构建成功,将空间设置为公开,就可以给其他人使用啦。
真诚开源,欢迎关注
FlagGems:https://github.com/FlagOpen/FlagGems FlagTree:https://github.com/FlagTree/flagtree FlagScale:https://github.com/FlagOpen/FlagScale FlagCX:https://github.com/FlagOpen/FlagCX