使用gradio部署微调后的模型

文章目录

概要

使用gradio部署微调后的模型

整体架构流程

  1. gradio前期学习,以下是一些常见的输入输出组件,有些即可输入也可输出
python 复制代码
    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')

以下部分则用于构造布局,按照标签页,行列构建

python 复制代码
gr.Blocks()
gr.Row()  # 行布局
gr.Column()  # 列布局
gr.Tab()  # 标签页
gr.Group()  # 组
gr.Accordion()  # 伸缩拉出组件

在使用方面使用Blocks 比interface更加灵活,更适合做出一个网页样式。如果要对样式进行再细化的处理,需要用到css技术,对前端有所了解的一定知道。

  1. 使用gradio构建网页布局

Gradio 是一个用于快速搭建机器学习模型和数据科学应用的开源 Python 库。它允许开发者创建交互式的用户界面,使得非技术用户也能方便地使用和测试机器学习模型。以下是 Gradio 的一些主要特点和使用方法:

主要特点:

  • 快速创建界面:只需几行代码即可生成交互界面。
  • 多种输入/输出类型:支持文本、图像、音频、视频等多种输入和输出类型。
  • 实时反馈:用户可以实时查看模型的预测结果。
  • 易于共享:可以轻松地将应用部署到 Web 上,生成一个共享链接。
python 复制代码
!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)
  1. 进行演示,模型是来自之前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)方法下加
bash 复制代码
"--tls_enable",
"true"
  • Llama应该是可以提供API访问模型,这样更利于开发,下一步进行这个处理。

小结

Gradio 是一个功能强大且易于使用的工具,适合快速搭建和测试机器学习模型的用户界面。还有更多的功能大家可以去官网或者其它博客进行学习。

相关推荐
啊哈哈哈哈哈啊哈哈22 分钟前
G9打卡——ACGAN
python·生成对抗网络·gan
ALLSectorSorft24 分钟前
相亲小程序用户注册与登录系统模块搭建
java·大数据·服务器·数据库·python
小一亿42 分钟前
【0基础PS】Photoshop (PS) 理论知识
学习·平面·adobe·信息可视化·photoshop
慕y2741 小时前
Java学习第九十一部分——OkHttp
java·开发语言·学习
caisexi1 小时前
Windows批量启动java服务bat脚本
java·windows·python
斜月2 小时前
Python Asyncio以及Futures并发编程实践
后端·python
No0d1es2 小时前
第15届蓝桥杯Pthon青少组_国赛_中/高级组_2024年9月7日真题
python·青少年编程·蓝桥杯·国赛·中高组
LiuYaoheng2 小时前
【Android】使用 Intent 传递对象的两种序列化方式
android·java·笔记·学习
九章数学体系2 小时前
九章数学体系:打破“吃苦悖论”,重构学习真谛
数据结构·学习·算法·数学建模·拓扑学
talented_pure3 小时前
Python打卡Day30 模块和库的导入
开发语言·python