首页 > 其他分享 >使用gradio部署微调后的模型

使用gradio部署微调后的模型

时间:2024-07-18 15:55:51浏览次数:10  
标签:inputs gr 模型 top 微调 label input gradio

文章目录

概要

使用gradio部署微调后的模型

整体架构流程

  1. 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技术,对前端有所了解的一定知道。

  1. 使用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)
  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)方法下加
"--tls_enable",
"true"
  • Llama应该是可以提供API访问模型,这样更利于开发,下一步进行这个处理。

小结

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

标签:inputs,gr,模型,top,微调,label,input,gradio
From: https://blog.csdn.net/zc1226/article/details/140476510

相关文章

  • 含光AI心理大模型:AI 心理助手,随时待命,伴你左右
    “我感觉自己毫无用处,做什么都不顺。”“焦虑让我窒息,没人能帮我。”……在当今这个快速变化的世界,我们每个人都可能会遇到压力和挑战,这些压力和挑战有时会让我们感到焦虑、失落,甚至自我怀疑。我们的内心可能充满了未被听见的声音,这些声音是我们情感状态的真实写照,它们渴望......
  • 大模型的短期记忆和上期记忆各自的使用场景
    吾名爱妃,性好静亦好动。好编程,常沉浸于代码之世界,思维纵横,力求逻辑之严密,算法之精妙。亦爱篮球,驰骋球场,尽享挥洒汗水之乐。且喜跑步,尤钟马拉松,长途奔袭,考验耐力与毅力,每有所进,心甚喜之。 吾以为,编程似布阵,算法如谋略,需精心筹谋,方可成就佳作。篮球乃团队之艺,协作共进,方显力......
  • 【十分钟学会微调大语言模型 】
    有同学给我留言说想知道怎么训练自己的大语言模型,让它更贴合自己的业务场景。完整的大语言模型训练成本比较高昂,不是我们业余玩家能搞的,如果我们只是想在某个业务场景或者垂直的方面加强大模型的能力,可以进行微调训练。本文就来介绍一种大语言模型微调的方法,使用的工具是我......
  • 苹果大模型系列之 从头开始在 Apple Silicon 上进行 ComfyUI(教程含完整步骤)
    简介如何在搭载AppleSilicon的MacBookPro上安装ComfyUI,并开始使用StableDiffusion创作AI生成的艺术作品。无需开发技能。在安装了Python3.9的M1MacBookPro和安装了Python3.10的M1MaxMacBookPro上进行了测试,均使用macOSSonoma14.1.2。本地......
  • 探索混合专家(MoE)模型预训练:开源项目实操
    探索混合专家(MoE)模型预训练:开源项目实操Mantaverse 来自知乎​目录收起MOE模型是什么实现Moe模型实现步骤拆解1.初始化和形状调整2.计算路由器的logits3.初始化和创建专家掩码4.循环计算专家层输出5.恢复形状并返回结果预训练效果对比DeepseekMoE结语......
  • 大模型长度扩展:直接外推, PI, NTK-aware, NTK-by-parts, Dynamic NTK, ALiBi, YaRN, S
    目录第一部分背景知识:从进制表示谈到直接外推、线性内插、进制转换1.1从进制表示到直接外推1.1.1进制表示1.1.2直接外推1.2从线性内插到进制转换1.2.1线性内插1.2.2进制转换第二部分从RoPE、直接外推到位置内插PositionInterpolation2.1旋转位置嵌入2.1.1RoPE的快速回......
  • 【AI牛马贾维斯】微信接入国内大模型生成专属于自己的贾维斯
    效果展示:*根据自定义知识库生成的答案创建并发布智能体创建一个bot(bot如果不知道怎么创建的可以参考这个【养成系】创建你的coze聊天chatbo并训练成你要的样子(摸鱼、炒股、工作…))2.点击右上角的发布选中微信订阅号,点击配置输入APPID,点保存,如果不知道怎么获......
  • Monsters Pack 04(游戏卡通可爱怪兽怪物战士模型)
    以下模型有3种进化形态:捕手战士鱼卫战士骑士战士小鬼战士猴东战士无鼻战士坑娃战士刺头战士树斯特战士楔形战士这些模型是为您的主要角色设计的敌人。进化的每个阶段都会使他变得更加强大,因此您可以用它来增强对手的实力,并作为敌人的boss。它适用于不同类型的游戏......
  • 大模型算法方向实习会经常提问哪些问题? ?
    现互联网研发一枚,曾拿过多个算法/研发岗SPoffer,简要介绍一下大模型算法岗面试内容和如何准备面试。大模型算法岗的面试内容,实际上可以拆解成两部分,一是算法岗通用的面试内容,二是大模型专有相关部分。算法岗通用面试内容这部分内容很重要,因为通用的面试内容可以适用于不同......
  • 一文了解大模型的三种类型
    大模型的发展至今,吸引了众多初学者的加入。其中,有小伙伴提出疑问:“有些大模型会同时开源三种模型,这些不同类型模型的区别是什么呢?”,那么本文将简要介绍LLM中的三种重要模型:基座模型(base)、聊天模型(chat)和指令模型(instruct)。一、base模型                b......