译者 | 朱先忠,审校 | 孙淑娟,还记得第一次开始构建一些SQL查询来分析数据吗?相信大多数时候,你只是想看看“有哪些畅销产品”或“每周产品访问次数”。那么,为什么要编写SQL查询,而不只是用自然语言询问自己的想法呢?,由于NLP(Natural Language Processing,自然语言处理)技术的最新进展,现在这种想法已经变成可能。人们现在不仅可以使用LLM(Large Language Model,大型语言模型),还可以教它们新的技能,这称作是迁移学习。该方法中,可以使用预训练模型作为起点,而且即使使用较小的标记数据集,与单独使用数据进行训练相比,您仍然可以获得出色的性能。,在本教程中,我们将使用谷歌的文本到文本(text-to-text)生成模型T5,并使用自定义数据进行迁移学习,以便将基本问题转换为SQL查询。我们将在T5中添加一个名为“将英语翻译成SQL”的新任务。通过本教程的学习,您将拥有一个经过培训的模型,并且可以把以下示例查询:,翻译成下面的SQL查询语句:,注意,你可以在相应链接处找到本文完整的Gradio演示程序(https://huggingface.co/spaces/mecevit/english-to-sql)和图层项目(https://app.layer.ai/layer/t5-fine-tuning-with-layer)的完整源码。,通的语言到语言的翻译数据集不同,我们可以借助模板以编程方式构建自定义的英语到SQL语句的翻译配对。下面,我们来看一下这方面的一些模板:,正如你所看到的,我们在这里使用了Layer中的@dataset装饰器。现在,我们可以通过以下方式轻松地将此功能传递到Layer层:,一旦上面语句运行完成,接下来,我们就可以开始构建自定义数据集加载程序实现微调T5模型了。,在本示例项目中,我们要实现的数据集基本上是一个PyTorch数据集的定制数据集实现。请参考以下代码:,至此,我们的数据集已准备就绪并注册到Layer层。现在,我们将着手开发微调逻辑部分。此处,我们使用@model装饰函数并将其传递给Layer层。这将在Layer层对模型进行训练,并将其注册到我们的项目中。,在上述代码中,我们使用了三个独立的Layer层装饰器:,现在,我们可以将分词器和模型训练函数传递给Layer层,以便在远程GPU实例上训练我们的模型。,训练完成后,我们可以在Layer层用户界面中找到我们的模型和度量指标。下图显示的是我们所使用的训练过程中的损失曲线:,Gradio(https://gradio.app/)是使用友好的Web界面演示机器学习模型的最快方法,任何人都可以在任何地方使用它!,接下来,我们将用Gradio构建一个交互式演示程序,以便为尝试本文中提供模型的读者提供一个用户界面。,接下来,让我们开始编写代码——创建一个Python文件app.py,并输入以下代码:,在上述代码中:,为了顺序运行这个小型Python应用程序,我们还需要一些额外的库。因此,我们创建一个包含以下内容的文件:,现在,我们已准备好发布Gradio应用程序了:,(1)打开Hugging face官网(译者注:Hugging Face是美国的一家开源创业公司,其业务领域已经从聊天机器人扩展到机器学习等领域),创建一个空间。,(2)别忘了选择Gradio作为Space SDK 2。,现在,使用以下命令将您的仓库代码克隆到本地目录:,然后,将requirements.txt文件和app.py文件放到复制的目录中,并在终端中运行以下命令:,现在,切换到你前面创建的空间。你会观察到在你创建的示例应用程序部署完毕后的程序界面。,在本文中,我们学习了如何使用谷歌的T5模型框架来微调大型语言的模型相关技巧。在仔细阅读完本文后,我相信您可以着手设计自己的任务并使用T5模型来微调你自己的应用程序模型了。,最后,你也可以查看下载并分析微调T5项目(https://app.layer.ai/layer/t5-fine-tuning-with-layer),并根据自己的任务对其进行修改。,原文及参考资料:,https://ai.googleblog.com/2020/02/exploring-transfer-learning-with-t5.html,https://app.layer.ai/layer/t5-fine-tuning-with-layer,https://huggingface.co/spaces,https://www.kdnuggets.com/2022/05/query-table-t5.html,朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。早期专注各种微软技术(编著成ASP.NET AJX、Cocos 2d-X相关三本技术图书),近十多年投身于开源世界(熟悉流行全栈Web开发技术),了解基于OneNet/AliOS+Arduino/ESP32/树莓派等物联网开发技术与Scala+Hadoop+Spark+Flink等大数据开发技术。
© 版权声明
文章版权归作者所有,未经允许请勿转载。