概要
使用gradio部署微调后的模型
整体架构流程
- gradio前期学习,以下是一些常见的输入输出组件,有些即可输入也可输出
gr.Audio(sources=['microphone', 'upload'], # 音频输入sources,支持录制或者上传音频文件
type='filepath', # filepath上传的文件路径,numpy则为音频文件的numpy输入形式
label='audio' # label就是标签
),
gr.Checkbox(label='checkbox'), # 选择框
gr.ColorPicker(label='colorPicker'), # 颜色选择器
gr.DataFrame(label='dataFrame'), # df表格
gr.Dropdown(['1111:1', '2222:2'], label='dropdown'), # 下拉框
gr.File(label='file', type='binary'), # 文件 type文件格式
gr.Image(sources=['webcam', 'upload'], label='image'), # webcam使用摄像头,upload上传
gr.Video(label='video', sources=['webcam', 'upload']), # 视频
gr.Slider(minimum=0, maximum=5, step=1, label='slider'), # 滑动条
gr.Textbox(label='textbox', lines=2, max_lines=3, placeholder='preText'), # 文本输入框 placeholder预显示的text
gr.TextArea(label='textarea'), # 更大一点的textbox
gr.Radio(['1111', '2222'], label='radio'),
gr.Number(label='number'), # 数字
gr.CheckboxGroup(['qqq:q', 'dddd:d'], label='checkboxGroup')
以下部分则用于构造布局,按照标签页,行列构建
gr.Blocks()
gr.Row() # 行布局
gr.Column() # 列布局
gr.Tab() # 标签页
gr.Group() # 组
gr.Accordion() # 伸缩拉出组件
在使用方面使用Blocks 比interface更加灵活,更适合做出一个网页样式。如果要对样式进行再细化的处理,需要用到css技术,对前端有所了解的一定知道。
- 使用gradio构建网页布局
Gradio 是一个用于快速搭建机器学习模型和数据科学应用的开源 Python 库。它允许开发者创建交互式的用户界面,使得非技术用户也能方便地使用和测试机器学习模型。以下是 Gradio 的一些主要特点和使用方法:
主要特点:
- 快速创建界面:只需几行代码即可生成交互界面。
- 多种输入/输出类型:支持文本、图像、音频、视频等多种输入和输出类型。
- 实时反馈:用户可以实时查看模型的预测结果。
- 易于共享:可以轻松地将应用部署到 Web 上,生成一个共享链接。
!pip install -q gradio
import gradio as gr
placeholder = '输入想问的问题,比如:出现了黄疸、恶心、呕吐等症状,可能患了什么疾病?'
#重置
def reset_input():
return ""
#生成
def generate_input(inputs, repeat_penalty, top_k, top_p, temperature):
messages = [
{
'role':'user',
'content':inputs
}]
input_ids = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt").to(model_lora.device)
outputs = model.generate(
input_ids=input_ids,
max_new_tokens=256,
# repeat_penalty=repeat_penalty,
top_k = top_k,
top_p = top_p,
temperature = temperature
)
response = outputs[0][input_ids.shape[-1]:]
out = tokenizer.decode(response, skip_special_tokens=True)
return out
with gr.Blocks() as demo:
with gr.Tab(label='Llama3'):
with gr.Row():
with gr.Column(scale=1):
gr.Label(value='该模型是基于Llama3开发的专门针对医疗咨询的语言模型', label='介绍')
repeat_penalty = gr.Slider(minimum=0, maximum=1, step=0.1, label='repeat_penalty') # 滑动条
top_k = gr.Slider(minimum=0, maximum=60, step=1, label='top_k') # 滑动条
top_p = gr.Slider(minimum=0, maximum=1, step=0.1, label='top_p') # 滑动条
temperature = gr.Slider(minimum=0, maximum=1, step=0.1, label='temperature') # 滑动条
with gr.Column(scale=10):
#输入文本框
inputs = gr.Textbox(label='input', lines=10, placeholder=placeholder, interactive=True)
with gr.Row():
button_reset = gr.Button(value='reset', interactive=True)
button_reset.click(fn=reset_input, inputs=None, outputs=inputs)
button_generate = gr.Button(value='generate')
#输出文本框
outputs = gr.Textbox(label='output', lines=15, interactive=False)
button_generate.click(fn=generate_input, inputs=[inputs, repeat_penalty, top_k, top_p, temperature], outputs=outputs)
demo.launch(share=True)
- 进行演示,模型是来自之前LoRA微调版本,初步效果如下图所示。
技术细节
- model:加载大模型比较耗时,可以先用Llama.cpp量化后再使用,这样能加快推理速度。
- gradio可以开放web页面更加方便,如果不行安装提示来,比如:
1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
2. Rename the downloaded file to: frpc_linux_amd64_v0.2
3. Move the file to this location: /usr/local/lib/python3.10/site-packages/gradio
同时需要对文件进行权限设置sudo chmod +x frpc_linux_amd64_v0.2。网上看到还有错误可以这样改:在gradio文件的路径里找到tunneling.py文件,在_start_tunnel(self, binary:str)方法下加
"--tls_enable",
"true"
- Llama应该是可以提供API访问模型,这样更利于开发,下一步进行这个处理。
小结
Gradio 是一个功能强大且易于使用的工具,适合快速搭建和测试机器学习模型的用户界面。还有更多的功能大家可以去官网或者其它博客进行学习。