大模型之二十一-小语言模型塞道开启

当前提到大语言模型,大家想到的都是动辄百亿规模以上参数量的模型,13B、70B都是稀疏平常入门级的,但是目前从模型层面来看,模型参数量的规模两极分化已经来临,早期各大公司为了效果怼上去,采取了简单粗暴的方法,那就是训练数据越多越好,模型越大越好,事实也确实证明这么发展的路子是对的,撇开医疗、法律等行业应用,但就模型层面多模态的趋势已经非常明显,这属于巨头企业、政府的菜,绝大部分公司还是围绕开源的10B左右做行业应用。模型规模层面接下来的另一个趋势是“小”,往“小”参数了的方向发展。
这一方向的践行者是微软和谷歌,从Phi-1开始,到这个月在Huggingface上发布的Phi-2,都显示着微软在这一方面的信心,从目前的结果来看,国内会有一批公司跟风,尤其是硬件公司也会跟风,就好比15年左右智能音箱刚出来的时候一样,一批硬件公司会涌入这里,包括手机、手表、pc等移动设备。

小语言模型赛道已经开启

Google于12月初发布了Gemini模型,相比我8月份的博客《大语言模型之五 谷歌Gemini》,谷歌不仅仅是给了对标OPenAI的大模型,还给了Gemini Nano小模型,该模型参数量分为1.8B(Nano-1)和3.25B(Nano-2),分别针对低内存和高内存移动设备,采用4bit量化部署。相比而言,微软早在6月份就发布了13亿参数Phi-1的模型,该模型以 Transformer 架构为基础,微软团队使用了包括来自网络的“教科书等级”数据和以 GPT-3.5 经过处理的“逻辑严密的内容”, 8 个英伟达 A100 GPU,在短短 4 天内完成训练。在测试中,phi-1 实现了最先进的Python编码性能。这更加坚定了微软的小模型路线,重点扩展常识推理和语言理解的Phi-1.5也应运而生,Google之后,12月微软再度发布27亿参数具有“杰出”推理和语言理解能力的Phi-2 。
在这里插入图片描述

Phi-1.5开源地址:https://huggingface.co/microsoft/phi-1_5
Phi-1开源地址:https://huggingface.co/microsoft/phi-1
Phi-1.5论文地址:https://arxiv.org/abs/2309.05463
Phi-2开源地址:https://huggingface.co/microsoft/phi-2

那么,为什么像微软和谷歌有了大模型,还希望为客户提供更小但计算效率更高的语言模型呢?原因有很多,但也许最重要的是时间和资金成本。成本是训练和运行LLM时最重要的痛点之一。例如,定制OpenAI的GPT-4模型定价从2300万美元开始,训练可能需要几个月的时间,并且需要数十亿的训练token。虽然还没有证实训练GPT-4的费用是多少,但它的前身GPT-3的费用可能超过400万美元,此外ChatGPT每天的运行费用可能高达70万美元。

传言GPT-4已在25,000个Nvidia A100 GPU上进行了90-100天的训练,但Phi-2仅用了14天就在96个A100 GPU上完成了训练。

尽管Phi-2没有达到GPT-4的性能水平,但它已经成功地在多个基准测试中超越了更大的模型。在BBH、常识推理、语言理解(仅Llama)、数学和编码等领域优于Mistral-7B和Llama-2等模型。它还在多个基准测试上优于Gemini Nano 2,包括BBH、BoolQ、MBPP和MMLU。

感谢微软、感谢Google开辟新战场。又能给国内创造就业了,国内大批公司将会在这个方向投入了。

微软如何训练的

在Phi-2的例子中,微软认为SLM成功的关键驱动因素之一是其训练数据的质量。输入模型的数据质量越好,其整体性能就越好。

在Phi-2中,微软使用了1.4T超高质量“教科书质量”训练数据,该数据集结合了合成数据集来训练模型常识推理和一般知识(科学、日常活动、心理理论),然后根据教育价值和内容质量进行过滤的网络上数据扩充之前的数据。

Phi-2和Phi-1.5一样采用了24层的Transformer架构,每个头的维度为64,并使用了旋转嵌入等技术来提升模型性能。

Phi-2没有通过强化学习或微调进行对齐,因此有可能通过这些措施进一步提高其性能。从微软发表的观点来看,如果低参数模型在精心策划的高质量数据集上进行训练,它们可以与大参数模型竞争。

fine-tune

import os
from dataclasses import dataclass, field
from typing import Optionalimport torch
from datasets import load_dataset
from datasets import load_from_disk
from peft import LoraConfig
from transformers import (AutoModelForCausalLM,AutoTokenizer,BitsAndBytesConfig,HfArgumentParser,AutoTokenizer,TrainingArguments,
)
from tqdm.notebook import tqdmfrom trl import SFTTrainer
from huggingface_hub import interpreter_logininterpreter_login()compute_dtype = getattr(torch, "float16")
bnb_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_quant_type='nf4',bnb_4bit_compute_dtype='float16',bnb_4bit_use_double_quant=False,)
device_map = {"": 0}#Download model
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", quantization_config=bnb_config, device_map=device_map,trust_remote_code=True,use_auth_token=True)model.config.pretraining_tp = 1 
peft_config = LoraConfig(lora_alpha=16,lora_dropout=0.1,r=32,target_modules=['lm_head.linear', 'transformer.embd.wte'], # is this correct?bias="none",task_type="CAUSAL_LM", 
)tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2", trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_tokentraining_arguments = TrainingArguments(output_dir="./results",per_device_train_batch_size=1,gradient_accumulation_steps=4,optim="paged_adamw_32bit",save_steps=500, #CHANGE THIS IF YOU WANT IT TO SAVE LESS OFTEN. I WOULDN'T SAVE MORE OFTEN BECAUSE OF SPACElogging_steps=10,learning_rate=2e-4,fp16=False,bf16=True,max_grad_norm=.3,max_steps=10000,warmup_ratio=.03,group_by_length=True,lr_scheduler_type="constant",
)model.config.use_cache = Falsedataset = load_dataset("json", data_files="your_dataset.json", split="train")trainer = SFTTrainer(model=model,train_dataset=dataset,peft_config=peft_config,dataset_text_field="text",max_seq_length=2048,tokenizer=tokenizer,args=training_arguments,packing=False,
)trainer.train()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/222457.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter 性能测试 —— 评估一个系统TPS与并发数!

问题:性能压测,如何评估一个系统的TPS和并发数? 1、对于新系统 由业务部门或开发人员预估交易量和TPS指标 可以参考公式:并发用户 在线用户数 * 10%。 当一个系统还没有上线时,我们可以预判的是这个系统准备要给多…

【数字图像处理】实验一 图像基本运算

图像基本运算 一、实验内容: 1. 熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。 2. 熟练掌握各种图像点运算的基本原理及方法。 3. 能够从深刻理解点运算,并能够思考拓展到一定的应用领…

MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序

系列文章目录 前言 MatGPT 是一款 MATLAB 应用程序,可让您轻松访问 OpenAI 的 ChatGPT API。使用该应用程序,您可以加载特定用例的提示列表,并轻松参与对话。如果您是 ChatGPT 和提示工程方面的新手,MatGPT 不失为一个学习的好方…

【Linux】编辑、查看和搜索文件

大多数 Linux 发行版不包含真正的 vi;而是自带一款高级替代版本,叫做 vim(它是“vi improved”的简写)由 Bram Moolenaar 开发的,vim 相对于传统的 Unix vi 来说,取得了实质性进步。 启动和退出 vim 使用vim可以启动,如命令行输…

MySQL概括与SQL分类

文章目录 一、计算机语言二、SQL语言三、数据库系统四、MySQL简介 一、计算机语言 二、SQL语言 三、数据库系统 四、MySQL简介

竞赛保研 基于CNN实现谣言检测 - python 深度学习 机器学习

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于CNN实现谣言检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&am…

搭建知识付费平台?明理信息科技为你提供全程解决方案

明理信息科技saas知识付费平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和维护…

搭载紫光展锐芯的移远通信RedCap模组顺利通过中国联通OPENLAB实验室认证

近日,移远通信联合紫光展锐在中国联通5G物联网OPENLAB开放实验室,完成了RedCap模组RG207U-CN端到端测试验收,并获颁认证证书。移远通信RG207U-CN成为业内率先通过联通OPENLAB认证的紫光展锐RedCap芯片平台的模组。 本次测试基于联通OPENLAB实…

Golang 的内存管理

文章目录 1.内存管理角色1.常见的内存分配方法线性分配器空闲链表分配器TCMalloc 2.Go 内存管理组件mspanmcache初始化替换微分配器 mcentralmheap 3.内存分配4.内存管理思想参考文献 1.内存管理角色 内存管理一般包含三个不同的组件,分别是用户程序(Mu…

【C语言】指针详解(二)

目录 1.指针变量类型的意义 1.1指针的解引用 1.2指针 - 整数 1.3void*指针 2.const修饰指针 2.1const修饰变量 2.2const修饰指针变量 1.指针变量类型的意义 1.1指针的解引用 指针变量的大小和类型无关,只要是指针变量,在同一个平台下&#xff0…

制作成电子版的五金产品册,打开线上消费市场

五金产品作为家庭装修和维修的必备之物,一直深受广大用户的喜爱。然而,传统的五金市场存在着诸多问题,如产品信息不透明、价格混乱、购买不便等。这些问题不仅影响了消费者的购物体验,也制约了五金行业的进一步发展。 现在很多人都…

《Python Advanced Programming + Design Patterns + Clean Code》

清洁代码 — 学习如何编写可读、可理解且可维护的代码 高级Python编程知识 Python之常用设计模式 Advanced Programming装饰器 decorators生成器 & 迭代器with 上下文管理器面向对象Mixin 模式反射机制并发编程 Design Patterns设计模式分类简单工厂模式工厂模式 √抽象工厂…

读取spring boot项目resource目录下的文件

背景 项目开发过程中,有一些情况下将配置文件放在resource下能简化代码实现和部署时的打包步骤。例如: 项目中使用的数据库升级脚本、初始化脚本。将文件放到resource下,打包在jar包中,不能直接通过File路径读取。下面介绍两种读…

法线贴图实现衣服上皱褶特效

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 法线贴图在3D建模中扮演着重要的角色,它通过模拟表面的微…

AngularJS

理解实现代码的逻辑为主要,代码怎么写为次要。 参考资料: 《AngularJS入门与进阶》,江荣波著 前端开发常用框架 React:由Facebook开发,用于构建用户界面的JavaScript库,以组件化和虚拟DOM著称。 Angular&…

Android应用-flutter使用Positioned将控件定位到底部中间

文章目录 场景描述示例解释 场景描述 要将Positioned定位到屏幕底部中间的位置,你可以使用MediaQuery来获取屏幕的高度,然后设置Positioned的bottom属性和left或right属性,一般我们left和right都会设置一个值让控制置于合适的位置&#xff0…

Peter算法小课堂—贪心与二分

太戈编程655题 题目描述: 有n辆车大甩卖,第i辆车售价a[i]元。有m个人带着现金来申请购买,第i个到现场的人带的现金为b[i]元,只能买价格不超过其现金额的车子。你是大卖场总经理,希望将车和买家尽量多地进行一对一配对…

听GPT 讲Rust源代码--src/tools(22)

File: rust/src/tools/tidy/src/lib.rs rust/src/tools/tidy/src/lib.rs是Rust编译器源代码中tidy工具的实现文件之一。tidy工具是Rust项目中的一项静态检查工具,用于确保代码质量和一致性。 tidy工具主要有以下几个作用: 格式化代码:tidy工具…

Inkscape SVG 编辑器 导入 Gazebo

概述 本教程描述了拉伸 SVG 文件的过程,这些文件是 2D 的 图像,用于在 Gazebo 中为您的模型创建 3D 网格。有时是 更容易在 Inkscape 或 Illustrator 等程序中设计模型的一部分。 在开始之前,请确保您熟悉模型编辑器。 本教程将向您展示如…

2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序

2017年第六届数学建模国际赛小美赛 B题 电子邮件中的笔迹分析 原题再现: 笔迹分析是一种非常特殊的调查形式,用于将人们与书面证据联系起来。在法庭或刑事调查中,通常要求笔迹鉴定人确认笔迹样本是否来自特定的人。由于许多语言证据出现在电…