核心内容包括:
Gradio的基本概念和安装方法
Gradio的Interface和ChatInterface的使用
Gradio的自定义界面和复杂布局
Gradio 的组件和运行机制
自定义组件与三方组件
通过这些学习,我们掌握了如何利用Gradio快速搭建交互式AI应用的基本流程和方法。
接下来,在本节课里,我们将学习如何选择 AI模型并完成部署与推理,以及实现应用功能无限拓展。
背景:
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 Tasks
from modelscope.pipelines import pipeline
import 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 Image
from io import BytesIO
image = Image.fromarray(output['output_imgs'][0])
image.show()
同样可以通过修改prompt来让大模型生成新的图片,比如一只猫
from modelscope.utils.constant import Tasks
from modelscope.pipelines import pipeline
import 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 Image
from io import BytesIO
image = Image.fromarray(output['output_imgs'][0])
image.show()
语音模型
在模型搜索页搜索speech_sambert-hifigan_tts_zh-cn_16k,并在模型详情页拷贝quickstart代码运行。
from modelscope.outputs import OutputKeys
from modelscope.pipelines import pipeline
from 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里面的内容来让模型回答一些其他问题
预设课程大纲如下
✔️课程一:全栈产品经理启发课:AI加持后,从想法到落地,就是这么简单!
✔️课程二:Gradio组件学习:应用UI界面可无限DIY
✔️课程三:AI模型部署与推理:应用功能可无限拓展(本次内容)
✔️课程四:前后端联调及应用发布:打通前后端的任督二脉,就是完整的AI应用!
✔️课程五:案例学习:通过AI应用案例来实践,用微调的思路先做出你自己的第一个AI应用!
无论是对课程内容的疑问、对教学方式的建议,还是对未来课程主题的期待,都请不吝赐教。你可以通过公众号留言或是直接加入我们学习群的方式,分享你的想法。
课程学习群:
我们会从公众号留言中选取有用的建议来赠送魔搭周边小礼品哦!