【ArchSummit架构师峰会】基于大模型的基础框架、中台、应用层等专题全覆盖 >>> 了解详情
写点什么

GPT 3.5 与 Llama 2 微调的综合比较

  • 2023-09-27
    北京
  • 本文字数:2409 字

    阅读完需:约 8 分钟

大小:621.33K时长:03:32
GPT 3.5与Llama 2微调的综合比较

在本文中,我将分享我通过 SQL 和函数表示任务对 Llama 2 和 GPT 3.5 进行微调的比较实验。总体结果如下:


  • GPT 3.5 在两个数据集上与 LoRA 微调的 CodeLlama 34B 相比,性能要好一些;

  • GPT 3.5 的训练成本高出 4 到 6 倍(部署成本甚至更高)。


SQL 任务的代码和数据在这里(https://github.com/samlhuillier/spider-sql-finetune),函数表示任务的代码和数据在这里(https://github.com/samlhuillier/viggo-finetune)。


为什么要做这个比较?对 GPT 3.5 进行微调的成本是很高的。我想通过这个实验看看手动微调模型是否可以在成本很低的情况下让性能接近 GPT 3.5。有趣的是,它们确实可以!


结果

CodeLlama 34B 和 GPT 3.5 执行 SQL 任务和函数表示任务的性能。


GPT 3.5 在这两项任务上表现出稍好的准确性。在使用模型生成 SQL 查询时,我还使用执行准确性作为比较它们在虚拟数据库上执行查询输出的指标(精确匹配准确性是指字符级别的比较)。

训练成本


Code Llama 34B

GPT 3.5

Spider数据集

3.32美元

11.99美元

函数表示数据集

4.27美元

26.05美元

注:我使用的是 vast.ai 提供的 A40 GPU,每小时费用为 0.475 美元。


实验设置


我使用了 Spider 数据集和 Viggo 函数表示数据集的子集,这些都是很好的用于微调的数据集:


  • 它们会教会模型给出期望的输出形式,而不是事实。SQL 和函数表示任务都期望结构化的输出。

  • 预训练的模型不能很好地完成这两项任务。


对于 GPT 3.5 的微调,OpenAI 只允许配置 epoch 的数量。他们建议选择 epoch 的数量。因此,为公平起见,我只对 Llama 进行最少的超参数微调,允许 OpenAI 选择 epoch 的数量,并训练 Llama 在评估数据集上收敛。

Llama 的架构


我做出的两个关键决定是使用 Code Llama 34B 和 Lora 微调(而不是全参数):



我使用的 LoRA 适配配置是这样的:


config = LoraConfig(      r=8,      lora_alpha=16,       target_modules=[       "q_proj",       "k_proj",       "v_proj",       "o_proj",   ],      lora_dropout=0.05,      bias="none",      task_type="CAUSAL_LM",  )
复制代码


我尝试在所有线性层使用适配配置(正如Qlora论文所建议的那样),发现几乎没有性能提升。类似地,将 r 增加到 16 只会消耗更多的计算量,而几乎没有提供性能上的好处。


数据集


SQL 提示词示例:

You are a powerful text-to-SQL model. Your job is to answer questions about a database. You are given a question and context regarding one or more tables.
You must output the SQL query that answers the question.### Input:Which Class has a Frequency MHz larger than 91.5, and a City of license of hyannis, nebraska?
### Context:CREATE TABLE table_name_12 (class VARCHAR, frequency_mhz VARCHAR, city_of_license VARCHAR)
### Response:
复制代码


我没有使用完整的 Spider 数据集,它的数据库 Schema 是这样的:

department : Department_ID [ INT ] primary_key Name [ TEXT ] Creation [ TEXT ] Ranking [ INT ] Budget_in_Billions [ INT ] Num_Employees [ INT ] head : head_ID [ INT ] primary_key name [ TEXT ] born_state [ TEXT ] age [ INT ] management : department_ID [ INT ] primary_key management.department_ID = department.Department_ID head_ID [ INT ] management.head_ID = head.head_ID temporary_acting [ TEXT ]
复制代码


相反,我选择使用 sql-create-context(https://huggingface.co/datasets/b-mc2/sql-create-context)数据集和 Spider 数据集的交集。因此,提供给模型的上下文是一个 SQL 创建命令(我这么做实际上完全是为了节省节点数):

CREATE TABLE table_name_12 (class VARCHAR, frequency_mhz VARCHAR, city_of_license VARCHAR)
复制代码


函数表示提示词示例:

Given a target sentence construct the underlying meaning representation of the input sentence as a single function with attributes and attribute values.This function should describe the target string accurately and the function must be one of the following ['inform', 'request', 'give_opinion', 'confirm', 'verify_attribute', 'suggest', 'request_explanation', 'recommend', 'request_attribute'].The attributes must be one of the following: ['name', 'exp_release_date', 'release_year', 'developer', 'esrb', 'rating', 'genres', 'player_perspective', 'has_multiplayer', 'platforms', 'available_on_steam', 'has_linux_release', 'has_mac_release', 'specifier']
### Target sentence:
I remember you saying you found Little Big Adventure to be average. Are you not usually that into single-player games on PlayStation?
### Meaning representation:
复制代码


输出是这样的:

verify_attribute(name[Little Big Adventure], rating[average], has_multiplayer[no], platforms[PlayStation])
复制代码


评估


两个模型收敛得都很快:


图中显示了在训练过程中模型在评估集上的损失。


对于 SQL 任务,我还使用 Spider 评估工具(https://github.com/taoyds/test-suite-sql-eval)计算 SQL 查询的执行准确性。评估工具会构建一个虚拟数据库,并将实际的输出与 GPT3.5 和 Llama 2 的查询输出进行比较。


结论


总的来说,通过这个经验,我觉得对 GPT 3.5 进行微调是为了初始验证或构建 MVP,而除此之外,像 Llama 2 这样的模型可能是你最好的选择。


为什么要对 GPT 3.5 进行微调?


  • 你想要证实微调是解决给定任务/数据集的正确方法;

  • 你想要全托管的体验。


为什么要对像 Llama 2 进行微调?


  • 你想省钱!

  • 你希望最大限度地榨取数据集的性能;

  • 你希望在训练和部署基础设施方面具有充分的灵活性;

  • 你想保留私有数据。


原文链接:

https://ragntune.com/blog/gpt3.5-vs-llama2-finetuning


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-09-27 15:356902

评论

发布
暂无评论
发现更多内容

公链技术开发公司:引领区块链技术的商业化进程

西安链酷科技

区块链技术公司

龙之谷链游再现辉煌!西安区块链游戏开发公司引领新潮流,开启虚拟冒险之旅!

西安链酷科技

区块链游戏开发 nft卡牌开发

新特性、新平台、新功能!Anolis OS 8.9 版本正式发布

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥操作系统

PrismNET棱镜协议,发展路径!

PrismNET

区块链 dapp PrismNET棱镜协议 PrismNET

vivo蓝河破浪前行,国产操作系统掀起创新风暴

脑极体

AI

智慧供应链新时代,顺丰科技助力企业实现系统性价值提升

新消费日报

公链技术开发公司:构建去中心化应用的新引擎

西安链酷科技

公链团队

探索去中心化应用程序(DApps)开发:重塑数字世界的无限可能!

西安链酷科技

dapp去中心化系统开发

交易所开发费用揭秘:找对搭建交易所的公司,成本透明不再迷茫!

西安链酷科技

区块链交易所开发 数字货币交易所 期权交易所开发

明天!龙蜥在 2024 OceanBase 开发者大会上等你

OpenAnolis小助手

操作系统 oceanbase 龙蜥社区

探索早期投资的奥秘:符文(Runes)生态系统的崛起

EOSdreamer111

符文协议的演变历程:从挑战到创新

股市老人

链上挖矿模式开发全攻略:数字货币的挖矿新篇章!

西安链酷科技

区块链开发

ClkLog自定义事件分析登场

ClkLog

数据分析 埋点 开源软件

四大战略合作重磅签署,九章云极DataCanvas公司为全球智算生态注能

九章云极DataCanvas

DApp软件开发全解析:智能合约定制,引领未来数字生态!

西安链酷科技

dapp合约开发

ETLCloud中数据源使用和管理的技巧

RestCloud

MySQL 数据库 ETL 数据源 数据源管理

盘点 | 2024 年最值得关注的十大 ETL 数据集成工具

tapdata

Tapdata 数据集成平台 etl工具都有哪些 数据etl工具

从故障演练到运维工具产品力评测的探索 | 龙蜥技术

OpenAnolis小助手

开源 操作系统 系统运维 龙蜥社区

面向 AI 软件栈的优先设计 龙蜥社区 AI 生态建设介绍

OpenAnolis小助手

开源 AI 操作系统 龙蜥社区 龙蜥操作系统

九章云极DataCanvas AIDC OS智算操作系统正式发布,开启AI智算新纪元

九章云极DataCanvas

什么是费曼学习法,具体使用方法?一文讲清费曼学法!

彭宏豪95

效率工具 高效学习 在线白板 办公软件 费曼学习法

学习 XQuery:XML数据查询的关键

小万哥

xml 程序人生 编程语言 软件工程 前端开发

Valkey开源社区再添新成员!阿里云与Redis核心贡献者再聚首

阿里云瑶池数据库

数据库 redis 阿里云 开源社区

引领区块链创新:公链技术开发公司的先驱之路

西安链酷科技

合约量化 合约开发 公链钱包开发

符文:比特币生态系统的新篇章

EOSdreamer111

使用EEPROM断电保存数据

芯动大师

EEPROM

公链技术开发公司:打造安全、高效的区块链基础设施

西安链酷科技

交易所开发 公链钱包开发

一文带你了解什么是国际短信

Finovy Cloud

云计算 国际短信

鸿蒙HarmonyOS实战-ArkUI组件(Grid/GridItem)

蜀道山

鸿蒙 HarmonyOS 鸿蒙开发 arkui ArkTS

鸿蒙HarmonyOS实战-ArkUI组件(Swiper)

蜀道山

鸿蒙 HarmonyOS 鸿蒙开发 arkui ArkTS

GPT 3.5与Llama 2微调的综合比较_生成式 AI_Ragntune_InfoQ精选文章