基于Gradio的AI应用搭建实践课③: AI模型部署与推理:应用功能可无限拓展

文摘   2025-01-16 18:20   浙江  

在上一节课我们学习了 Gradio 的基础


核心内容包括:


  1. Gradio的基本概念和安装方法

  2. Gradio的Interface和ChatInterface的使用

  3. Gradio的自定义界面和复杂布局

  4. Gradio 的组件和运行机制

  5. 自定义组件与三方组件

通过这些学习,我们掌握了如何利用Gradio快速搭建交互式AI应用的基本流程和方法。


接下来,在本节课里,我们将学习如何选择 AI模型并完成部署与推理,以及实现应用功能无限拓展。


建议学习步骤


Step1: 先看一遍视频教程,对本节课程内容有一个整体的了解 




Step2:然后根据下方图文版教程和demo示例动手实践,学以致用 



背景:

AI领域的模型运行往往需要比较高的计算资源,开发者没有相关的硬件资源,因此魔搭提供了多种方式帮助开发者快速搭建环境运行模型效果。


课程目标:

在本节课中,你将学习:


1、如何在魔搭上搜索模型

2、如何使用Notebook环境运行模型

3、如何SwingDeploy部署模型API


课程内容:

1.在魔搭上搜索模型

可以通过https://www.modelscope.cn/models 进入模型页


根据关键字进行搜索

比如搜索Qwen2.5-7b模型


根据模型属性进行过滤

左侧栏可以根据模型任务类型进行模型检索,比如过滤文本生成的模型


根据推理框架进行模型搜索


根据模型归类进行过滤

右侧栏可以根据社区的模型归类进行搜索,比如可以搜索模型推理API、在线体验的模型


根据条件进行模型搜索排序

除了根据需求进行搜索以外,还可以根据一定的排序规则对搜索出来的模型进行排序


2.使用Notebook环境运行模型并验证效果

Notebook是ModelScope提供的免费计算资源,可以通过登录并编码的方式进行模型的体验。可以通过如下的方式进行体验:


2.1 首先需要将您的modelscope账号绑定阿里云账号,详细文档参考:https://www.modelscope.cn/docs/notebooks/free-trial


2.2 进入首页->我的Notebook,可以根据模型的大小选择GPU或CPU实例,点击启动Notebook


2.3 新建ipynb文件


2.4 输入模型的推理代码,并运行
  • 文生文模型

比如我们搜索Qwen2.5-7B-Instruct模型,并且点击进入模型详情页。模型详情页的QuickStart部分有实例代码可以运行模型效果,例如让大模型来介绍一下杭州

from modelscope import AutoModelForCausalLM, AutoTokenizer
model_name = "qwen/Qwen2.5-7B-Instruct"
model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype="auto", device_map="auto")tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "介绍一下杭州"messages = [ {"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."}, {"role": "user", "content": prompt}]text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate( **model_inputs, max_new_tokens=512)generated_ids = [ output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]print(response)


点击左上角的按钮即可运行


如下是大模型的回答


可以通过修改代码里的prompt来替换问题,比如让大模型回答北京的景点都有哪些


  • 文生图模型

我们也可以尝试一下其他的模型,比如AI-ModelScope/stable-diffusion-v1-5模型,同样通过模型搜索页可以搜到相关模型并进入详情页modelscope usage 拷贝示例代码并运行

from modelscope.utils.constant import Tasksfrom modelscope.pipelines import pipelineimport cv2
pipe = pipeline(task=Tasks.text_to_image_synthesis, model='AI-ModelScope/stable-diffusion-v1-5', model_revision='v1.0.0')
prompt = 'a dog'output = pipe({'text': prompt})cv2.imwrite('result.png', output['output_imgs'][0])

并且为了更好的展示图片添加如下的代码

from PIL import Imagefrom io import BytesIOimage = Image.fromarray(output['output_imgs'][0])image.show()


同样可以通过修改prompt来让大模型生成新的图片,比如一只猫

from modelscope.utils.constant import Tasksfrom modelscope.pipelines import pipelineimport cv2
pipe = pipeline(task=Tasks.text_to_image_synthesis, model='AI-ModelScope/stable-diffusion-v1-5', model_revision='v1.0.0')
prompt = 'a cat'output = pipe({'text': prompt})cv2.imwrite('result.png', output['output_imgs'][0])from PIL import Imagefrom io import BytesIOimage = Image.fromarray(output['output_imgs'][0])image.show()


  • 语音模型

在模型搜索页搜索speech_sambert-hifigan_tts_zh-cn_16k,并在模型详情页拷贝quickstart代码运行。

from modelscope.outputs import OutputKeysfrom modelscope.pipelines import pipelinefrom modelscope.utils.constant import Tasks
text = '一直漂亮的小狗'model_id = 'damo/speech_sambert-hifigan_tts_zh-cn_16k'sambert_hifigan_tts = pipeline(task=Tasks.text_to_speech, model=model_id)output = sambert_hifigan_tts(input=text, voice='zhitian_emo')wav = output[OutputKeys.OUTPUT_WAV]with open('output.wav', 'wb') as f: f.write(wav)


语音文件保存在当前目录的 output.wav 文件中


可以通过修改text来生成不同的语音播报内容,以及可以通过voice来修改不同的语音发音人,目前支持发音人zhitian_emo,zhiyan_emo,zhizhe_emo,zhibei_emo。


3.使用SwingDeploy运行模型并验证效果

ModelScope在提供上述Notebook免费计算资源的同时,也提供了SwingDeploy模型推理服务功能,用户可以通过简单的页面操作,就可以将模型部署成API服务。相比较于Notebook的方式,用户可以进行零代码部署,更加便捷。

可以通过如下方式体验:


点击首页->模型服务->新建部署

在模型的部署页,搜索相关模型,比如Qwen2.5-7B-Instruct,点击一键部署


部署需要一定的时间,喝杯咖啡等待一会儿~


部署完成后点击立即使用,可以获取模型的调用代码(下述代码只是示例,根据实际部署情况来粘贴)。

from openai import OpenAI
model_id = 'Qwen/Qwen2.5-7B-Instruct-GGUF'
client = OpenAI( base_url='https://ms-fc-your-id.api-inference.modelscope.cn/v1', api_key='YOUR_MODELSCOPE_SDK_TOKEN')
response=client.chat.completions.create( model=model_id, messages=[{"role":"user", "content":"你好,能帮我介绍一下杭州吗?"}], stream=True)
for chunk in response: print(chunk.choices[0].delta.content, end='', flush=True)


调用的API方式符合OpenAI的标准,可以将上述代码粘贴到自身开发环境或Notebook上运行,运行的环境对于GPU没有要求。注:第一次调用时,模型需要加载,比较慢。且服务设置了弹性策略,一段时间没调用后资源进行收缩,重新调用会引发模型重新加载。

可以通过修改content里面的内容来让模型回答一些其他问题


Step3:反馈学习需求 



预设课程大纲如下

✔️课程一:全栈产品经理启发课:AI加持后,从想法到落地,就是这么简单!

✔️课程二:Gradio组件学习:应用UI界面可无限DIY

✔️课程三:AI模型部署与推理:应用功能可无限拓展(本次内容)

✔️课程四:前后端联调及应用发布:打通前后端的任督二脉,就是完整的AI应用!

✔️课程五:案例学习:通过AI应用案例来实践,用微调的思路先做出你自己的第一个AI应用!

无论是对课程内容的疑问、对教学方式的建议,还是对未来课程主题的期待,都请不吝赐教。你可以通过公众号留言或是直接加入我们学习群的方式,分享你的想法。

课程学习群:


我们会从公众号留言中选取有用的建议来赠送魔搭周边小礼品哦!





👇点击关注ModelScope公众号获取
更多技术信息~



魔搭ModelScope社区
模型开源社区魔搭社区ModelScope官方账号
 最新文章