微信扫码
与创始人交个朋友
我要投稿
1、分层推理
AirLLM的分层推理基于分而治之的理念。大型语言模型通常由一个嵌入投影层和多个相同的Transformer层构成。在推理过程中,各层顺序执行,上一层输出作为下一层输入。AirLLM利用这一特性,在执行某一层推理时,仅从磁盘加载该层参数,计算完成后释放内存。例如,对于70B参数的大模型,每层只需约1.6GB GPU内存(约为整个模型的1/80)。即便考虑输出缓存(如KV缓存),当输入长度为100时,额外GPU内存仅约30MB,这使得整个70B模型推理在4GB显存内即可完成。
2、FlashAttention
FlashAttention是AirLLM性能提升的关键技术。它源于对self-attention内存复杂度优化的研究,将原始O(n²)的内存复杂度降低至O(n)。通过按顺序计算和更新中间结果,并丢弃不必要数据的方式,实现了这一突破。同时,FlashAttention深度优化了CUDA内存访问,从而在推理和训练阶段实现多倍加速。这种优化使得模型在处理长序列文本时更加高效,显著提升了推理速度。
3、模型文件共享
原始大型语言模型文件通常分割为较大块(如10GB左右),但分层推理每层仅需约1.6GB数据。若按原始块加载,每层执行都要重新加载整个文件,会造成大量内存浪费。AirLLM通过预处理和分层分割原始Hugging Face模型文件,并使用安全张量(SafeTensors)存储,以内存映射方式加载。SafeTensors确保存储和内存格式匹配,加快磁盘读取速度,减少重复加载和磁盘读取导致的内存损耗,有效提高了推理效率。
4、元设备
AirLLM借助Hugging Face Accelerate的元设备(MetaDevice)功能优化内存。元设备是为运行超大型模型设计的虚拟设备,通过元设备加载模型时,仅加载代码,内存使用率为零。在执行过程中,根据需要将模型部分内容从元设备动态转移到CPU或GPU等真实设备。这种动态加载机制使模型能根据硬件资源灵活调整,在保证推理性能的同时,最大程度减少内存占用。
1、低内存需求
AirLLM的突出优势在于其低内存需求。它打破了大型语言模型对高端硬件的依赖,能让70亿参数级别的大型语言模型在仅4GB VRAM的单张GPU卡上运行,且无需量化、蒸馏或剪枝等模型压缩手段。更厉害的是,它可使405B参数的Llama 3.1模型在8GB VRAM的硬件上运行,极大降低了大模型推理的硬件门槛,让更多设备能运行大模型。
2、高度灵活性
AirLLM适用于多种场景,无论是学术研究中的模型探索、工业生产中的应用开发,还是在移动设备、资源受限的数据中心部署AI应用,都能表现出色。它能根据不同硬件条件和应用场景自适应调整模型运行方式,满足多样化需求,推动AI在各领域广泛应用。
3、开源特性
作为开源项目,AirLLM吸引了全球开发者参与。这种开源模式促进了技术交流与协作,开发者可贡献代码、提出改进建议,共同推动项目发展。同时,开源也便于开发者根据自身需求定制和扩展功能,加速了大型语言模型推理技术的创新。
1、教育科研领域
在教育和科研中,AirLLM意义重大。过去,探索先进NLP模型需要昂贵硬件,限制了高校实验室和个人研究者。现在,借助AirLLM,他们在本地普通设备上就能运行70B甚至更大参数的模型,降低科研门槛,激发科研创新,推动自然语言处理研究发展,培养更多AI人才。
2、企业级应用开发
对于企业开发团队,AirLLM助力快速实现AI功能。在构建智能客服、内容生成平台、数据分析预测等应用时,可基于现有硬件资源利用AirLLM运行大型语言模型,加速企业数字化转型和AI应用落地,提升企业竞争力和创新能力。
3、个人开发者创新
个人开发者也因AirLLM受益。他们能在笔记本电脑等普通硬件上运行大规模模型,进行测试、开发和创新。这为个人开发者提供广阔创作空间,使其能自由探索AI应用边界,开发如写作助手、智能学习工具等创新应用。
1、安装 airllm 包
通过`pip install airllm`命令安装AirLLM包。
pip install airllm
2、模型推理示例(以Llama 2模型为例)
from airllm import AutoModel
定义模型输入的最大长度
MAX_LENGTH = 128
使用预训练模型的路径或名称来加载模型
这里使用的是Hugging Face模型库中的模型ID
model = AutoModel.from_pretrained("garage-bAInd/Platypus2-70B-instruct")
如果模型已经下载到本地,也可以使用本地路径来加载模型
这一行被注释掉了,如果需要使用本地模型,可以取消注释
#model = AutoModel.from_pretrained("/home/ubuntu/.cache/huggingface/hub/models--garage-bAInd--Platypus2-70B-instruct/snapshots/b585e74bcaae02e52665d9ac6d23f4d0dbc81a0f")
定义输入文本列表,这里只有一个问题
input_text = [
'What is the capital of United States?',
#'I like',
]
使用模型的tokenizer将输入文本转换为模型可以理解的token
return_tensors="pt" 表示返回PyTorch张量
return_attention_mask=False 表示不返回注意力掩码
truncation=True 表示如果输入超过最大长度则截断
max_length=MAX_LENGTH 设置最大长度限制
padding=False 表示不进行填充
input_tokens = model.tokenizer(input_text,
return_tensors="pt",
return_attention_mask=False,
truncation=True,
max_length=MAX_LENGTH,
padding=False)
使用模型生成文本
input_tokens['input_ids'].cuda() 将输入ID传递到GPU
max_new_tokens=20 设置生成的最大新token数量
use_cache=True 表示使用缓存来加速生成过程
return_dict_in_generate=True 表示返回一个字典而不是直接返回生成的序列
generation_output = model.generate(
input_tokens['input_ids'].cuda(),
max_new_tokens=20,
use_cache=True,
return_dict_in_generate=True)
将生成的token序列解码回文本
output = model.tokenizer.decode(generation_output.sequences[0])
打印生成的文本
print(output)
AirLLM作为大型语言模型推理领域的创新开源工具包,凭借其卓越的技术亮点、突出的功能特点和广泛的应用场景,为解决大模型在资源受限环境下的推理难题提供了有效方案。它推动了AI技术的普及和发展,让更多人能够利用大型语言模型创造价值。无论是科研人员、企业开发者还是个人开发者,都能从AirLLM中获得助力,开启更多的可能性。
GitHub项目地址:https://github.com/lyogavin/airllm
点亮“关注”,设为“星标”,精彩不迷路!我们携手探索AI的无限可能,精彩内容,持续为您更新!
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-22
Kotaemon:开源基于文档检索的聊天系统(RAG Chat)
2024-11-22
刚刚,OpenAI公开o1模型测试方法,人机协作时代!
2024-11-21
22.4K+ Star!Chatbox:你的终极AI桌面助手
2024-11-21
Magentic-One:微软开源多智能体系统,让 AI 自己动手解决问题
2024-11-21
阿里发布Qwen2.5-Turbo,支持100万Tokens上下文!
2024-11-20
MNN在大模型端侧部署上的探索
2024-11-19
从浏览器自动化到个人助手,Skyvern又悄悄占据了AI市场的一席之地?
2024-11-19
超GPT-4o,1240亿参数!最强开源多模态模型 Pixtral Large!
2024-05-06
2024-07-25
2024-08-13
2024-06-12
2024-07-11
2024-06-16
2024-07-20
2024-06-15
2024-07-25
2024-07-25
2024-11-22
2024-11-19
2024-11-13
2024-11-13
2024-10-07
2024-09-22
2024-09-20
2024-09-14