TinyLlama-1.1B(小羊驼)模型开源-Github高星项目分享

简介

TinyLlama项目旨在在3万亿tokens上进行预训练,构建一个拥有11亿参数的Llama模型。经过精心优化,我们"仅"需16块A100-40G的GPU,便可在90天内完成这个任务🚀🚀。训练已于2023-09-01开始。项目地址:https://github.com/jzhang38/TinyLlama/a5332bfec33d6be891e5fa3190b40959.jpeg

特点

采用了与Llama 2完全相同的架构和分词器。这意味着TinyLlama可以在许多基于Llama的开源项目中即插即用。此外,TinyLlama只有1.1B的参数,体积小巧,适用于需要限制计算和内存占用的多种应用。

发布时间表

19a79f8f3753e1234e46905acd920400.jpeg需要注意的是,由于我们的现在模型还处于训练初期,学习率并没有完全稳定下来,为了更好的体验我们的模型,您可以下载我们 聊天模型 或者通过 chat demo 来尝试我们的模型。

潜在场景

小型但强大的语言模型对许多应用都很有用。以下是一些潜在的场景:

  • 帮助对大型模型进行speculative decoding。
  • 在边缘装置上运行,比如离线的实时机器翻译 (TinyLlama的4比特量化版本的模型权重只需要550MB的内存)。
  • 在游戏中实现实时对话生成(因为还得给游戏本身留显存所以模型要小)。

此外,我们的代码可以给初学者做一个入门预训练的简洁参考。如果你要训练50亿以下参数的语言模型, 你其实不需要Megatron-LM。

训练细节

2d00a90eb510b7420c7bc6ec5b0041f9.jpeg我们的代码库支持以下特性:

  • multi-gpu and multi-node distributed training with FSDP.
  • flash attention 2.
  • fused layernorm.
  • fused swiglu.
  • fused cross entropy loss .
  • fused rotary positional embedding.

Credit: flash attention 2, fused layernorm, fused cross entropy loss, and fused rotary positional embedding are from the FlashAttention repo. Fused swiglu is from xformers.有了这些优化, 我们可以达到24k tokens/秒/A100的训练速度,也就是56%的MFU(在A100-80G上的MFU会更高)。这个速度可以让你可以在8个A100上用32小时训练一个chinchilla-optimial的模型(11亿参数,220亿token)。这些优化也大大减少了显存占用, 我们可以把11亿参数的模型塞入40GB的GPU里面还能同时维持16k tokens的per-gpu batch size。只需要把batch size改小一点, 你就可以在RTX 3090/4090上面训练TinyLlama。下面是我们的代码库与Pythia和MPT的训练速度的比较。ModelA100 GPU hours taken on 300B tokensTinyLlama-1.1B3456Pythia-1.0B4830MPT-1.3B7920Pythia的数字来自他们的论文。MPT的数字来自这里,作者说MPT-1.3B"was trained on 440 A100-40GBs for about half a day" on 200B tokens。TinyLlama是一个相对较小的模型, 同时我们用了GQA, 这意味着它在推理期间也很快。以下是我们测量的一些推理速度:FrameworkDeviceSettingsThroughput (tokens/sec)Llama.cppMac M2 16GB RAMbatch_size=1; 4-bit inference71.8vLLMA40 GPUbatch_size=100, n=107094.5

预训练 TinyLlama

已安装 CUDA 11.8

安装Pytorch

pip install --index-url https://download.pytorch.org/whl/nightly/cu118 --pre 'torch>=2.1.0dev'源构建 XFormers注意:截至 2023 年 9 月 2 日,xformers 不提供 torch 2.1 的预构建二进制文件。您必须从源代码构建它。pip uninstall ninja -y && pip install ninja -Upip install -v -U git+https://github.com/facebookresearch/xformers.git@main#egg=xformers安装 Flash-Attention 2git clone https://github.com/Dao-AILab/flash-attentioncd flash-attentionpython setup.py installcd csrc/rotary && pip install .cd ../layer_norm && pip install .cd ../xentropy && pip install .cd ../.. && rm -rf flash-attention安装依赖pip install -r requirements.txt tokenizers sentencepiece安装其他依赖项。构建 xformers/flash-attention 可能需要 >= 5 分钟。如果进程似乎停滞或终端打印出许多警告,请不要担心。

数据准备

下载数据集

将 Slimpajama 和 Starcoderdata 数据集下载到您选择的目录。cd /path/to/datasetgit lfs installgit clone https://huggingface.co/datasets/cerebras/SlimPajama-627Bgit clone https://huggingface.co/datasets/bigcode/starcoderdataSlimPajama 数据集占用 893GB 磁盘空间,starcoderdata 占用 290GB

标记数据

python scripts/prepare_starcoder.py --source_path /path/to/starcoderdata/ --tokenizer_path data/llama --destination_path data/slim_star_combined --split train --percentage 1.0python scripts/prepare_slimpajama.py --source_path /path/to/SlimPajama --tokenizer_path data/llama --destination_path data/slim_star_combined --split validation --percentage 1.0python scripts/prepare_slimpajama.py --source_path /path/to/SlimPajama --tokenizer_path data/llama --destination_path data/slim_star_combined --split train --percentage 1.0处理后的数据将占用1.8T存储空间

预训练

如果您的设置包含两个节点,每个节点有 8 个 GPU,您可以使用以下命令启动预训练:

节点1:

lightning run model \ --node-rank=0 \ --main-address=172.16.101.5 \ --accelerator=cuda \ --devices=8 \ --num-nodes=2 \ pretrain/tinyllama.py --devices 8 --train_data_dir data/slim_star --val_data_dir data/slim_star

节点 2:

lightning run model \ --node-rank=1 \ --main-address=172.16.101.5 \ --accelerator=cuda \ --devices=8 \ --num-nodes=2 \ pretrain/tinyllama.py --devices 8 --train_data_dir data/slim_star --val_data_dir data/slim_star#

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

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

相关文章

2024在视频号开店怎么样?平台现状如下,有电商经验者优先!

我是王路飞。 现在开网店、做电商的平台有很多,但是有着绝对流量优势的,除了抖音之外就是视频号了。 但是抖音跟视频号相比,已经属于一个很成熟的平台了,商家们也开始进入到内卷阶段了。 所以,如果你们2024年想做电…

列表进入详情页的传参问题(vue的问题)

<router-link :to"{path: detail, query: {id: 1}}">前往detail页面</router-link> c页面的路径为http://localhost:8080/#/detail?id1&#xff0c;可以看到传了一个参数id1&#xff0c;并且就算刷新页面id也还会存在。此时在c页面可以通过id来获取对应…

[AutoSar]基础部分 RTE 07 VFB虚拟功能总线

目录 关键词平台说明一、VFB1.1VFB是什么1.1VFB的好处1.2VFB的坏处 二、VFB在ECU内部的描述2.1Components2.2 Port-Interfaces2.3 Port2.4 Compositions 关键词 嵌入式、C语言、autosar、VFB 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0…

【Java后端】——JAVA后端学习路线

前言 hello小伙伴们&#xff0c;博主学后端也有一段时间了&#xff0c;感觉后端的知识确实比较多&#xff0c;对于逻辑思维的要求和基础要求也比较高。接下来咱们就一起捋一捋后端的学习路线&#xff0c;然后咱们就开始按顺序对每一块知识进行复习&#xff0c;总结和串联。 j…

bmp图像文件格式超详解

0 BMP简介 BMP(Bitmap-File)图形文件&#xff0c;又叫位图文件&#xff0c;是Windows采用的图形文件格式&#xff0c;在Windows环境下运行的所有图像处理软件都支持BMP图像文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。一个BMP文件由四部分组成&#xff1a; B…

Redis-Cluster 与 Redis 集群的技术大比拼

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Redis-Cluster 与 Redis 集群的技术大比拼 前言概念与原理对比Redis-Cluster&#xff1a;基于哈希槽的分布式解决方案传统 Redis 集群&#xff1a;主从架构下的数据分片方式 搭建与配置的异同Redis-Cl…

OpenCV入门04:调整图像对比度和亮度

教程开源 本教程开源&#xff0c;地址&#xff1a;https://gitee.com/zccbbg/opencv_study 图像的亮度和对比度说明 亮度&#xff1a; 亮度是指图像中像素的整体明亮程度。在数字图像中&#xff0c;每个像素都有一个灰度值&#xff0c;表示其亮度水平。亮度越高&#xff0c;像…

Elasticsearch DSL指令请求前缀解析:快速参考指南【记录】

简单记录&#xff0c;后续整理补充 介绍&#xff1a; Elasticsearch的DSL&#xff08;Domain Specific Language&#xff09;提供了丰富的指令和操作&#xff0c;用于执行各种搜索、索引和管理任务。在使用这些指令时&#xff0c;需要使用适当的请求前缀来标识所需的操作。本文…

数据分析-Pandas如何轻松处理时间序列数据

Pandas-如何轻松处理时间序列数据 时间序列数据在数据分析建模中很常见&#xff0c;例如天气预报&#xff0c;空气状态监测&#xff0c;股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2​数据作为样例。 python数据分析-数据表读写到pandas 经典…

omics简介

omics简介 公众号pythonic生物人写的系列文章介绍了组学的相关内容&#xff0c;本文仅做了一个简单的知识框架&#xff0c;供后面遇到对应问题&#xff0c;快速查阅。欢迎大家去关注原作者。 这篇文章也非常值得阅读&#xff1a;肿瘤NGS行业新人如何构建自己的知识体系-思考问题…

YOLOV8

YOLOv8 是 ultralytics &#xff08;超溶体&#xff09;公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本&#xff0c;目前支持图像分类、物体检测和实例分割任务&#xff0c;在还没有开源时就收到了用户的广泛关注。 总结&#xff1a; 1. 是YOLOV5的继承者 2. …

工智能基础知识总结--词嵌入之Word2Vec

词嵌入要解决什么问题 在自然语言系统中,词被看作最为基本的单元,如何将词进行向量化表示是一个很基本的问题,词嵌入(word embedding)就是把词映射为低维实数域向量的技术。 下面先介绍几种词的离散表示技术,然后总结其缺点,最后介绍词的分布式表示及其代表技术(word2v…

msvcr120.dll是什么?msvcr120.dll丢失要怎么去修复?

随着计算机技术的不断发展&#xff0c;我们在使用软件或游戏时经常会遇到各种错误提示&#xff0c;其中找不到msvcr120.dll就是一种常见的错误。那么&#xff0c;msvcr120.dll是什么&#xff1f;它的作用是什么&#xff1f;如何修复msvcr120.dll丢失的问题&#xff1f;本文将为…

1.4号io网络

1.多进程 引入目的&#xff1a;让多个任务实现并发执行 并发执行&#xff1a;同一时间只有一个进程执行&#xff0c;通过时间轮询调度多个进程&#xff0c;由于时间每个进程所用时间极短&#xff0c;所以宏观表现为多个进程同时进行。 并行执行&#xff1a;多个任务器执行多…

【福利】百度内容审核平台实战

文章目录 前言功能概述产品价格快速入门&#xff08;账号登录及资源领取、在线验证、编写示例程序&#xff09;实战演示1、首先创建一个应用2、引入百度的SDK3、测试用例百度内容审核-文本 200QPS百度内容审核-图像 50QPS 写在最后 前言 百度内容审核平台主要针对图像、文本、…

python中notebook的 %magic

IPythons magic functions注意&#xff1a;既然是IPython的内置magic函数&#xff0c;那么在Pycharm中是不会支持的。The magic function system provides a series of functions which allow you to control the behavior of IPython itself, plus a lot of system-type featu…

Python实现深度迁移学习-CIFAR100-ResNet50

# Pandas and numpy for data structures and util fucntions import scipy as sp import numpy as np import pandas as pd from numpy.random import rand pd.options.display.max_colwidth = 608# Scikit Imports from sklearn import preprocessing from sklearn

python:sys模块

Python sys 模块学习笔记 sys 模块是 Python 标准库中的一个核心模块&#xff0c;提供了与 Python 解释器及其环境相关的功能。 1. sys.argv sys.argv 是一个包含命令行参数的列表&#xff0c;其中第一个元素是脚本名称&#xff0c;之后的元素是在运行脚本时传递的参数。 # e…

C语言可变参数输入

本博文源于笔者正在学习的可变参数输入&#xff0c;可变参数是c语言函数中的一部分&#xff0c;下面本文就以一个很小的demo演示可变参数的编写 问题来源 想要用可变参数进行多个整数相加 方法源码 #include<stdio.h> #include<stdlib.h> #include<stdarg.h…

接口测试基础(超详细)

一、HTTP 1、http请求头和响应头包含那些内容&#xff1f; 请求头信息 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 2、常用的请求报头如下&#xff1a; Accept&#xff1a;浏览器可接受的MIME类型。 l MIME用于设定某种扩展名的文件用哪种应用程…