LLMC:大语言模型压缩工具的开发实践

关注:青稞AI,学习最新AI技术
青稞Talk主页:qingkelab.github.io/talks

大模型的进步,正推动我们向通用人工智能迈进,然而庞大的计算和显存需求限制了其广泛应用。模型量化作为一种压缩技术,虽然可以用来加速大模型并且有效降低显存需求,但量化后也可能会带来精度风险。

在这里插入图片描述

在由北航、商汤、南洋理工等团队联合推出的即插即用的大模型压缩工具包:LLMC中,不仅支持DeepSeekv2(2.5)等MOE模型以及Qwen2VL、Llama3.2等VLM模型的量化,还支持包括整型量化、浮点量化等量化方案,以及AWQ、GPTQ、SmoothQuant 和 Quarot 等先进量化算法。

LLMC可以利用最先进的压缩算法提高效率并减少模型体积,同时不影响预测精度。目前已开源,大家可以直接使用

https://github.com/ModelTC/llmc

12月16日晚8点,青稞Talk第32期,商汤科技研究院谷石桥和雍洋两位模型压缩研究员,将对LLMC进行直播分享,主题为《LLMC:大语言模型压缩工具的开发实践》。

他们将从工具框架设计,常用算法解读和工具使用方式等角度,为大家详细讲解LLMC及实践,希望大家可以从中获益。

主讲嘉宾

谷石桥,商汤科技研究院模型压缩研究员,毕业于天津大学,现主要研究方向为深度学习的模型压缩技术,目前已在EMNLP,PatternRecognition, TCSVT等发表多篇论文。

雍洋,商汤科技研究院模型压缩研究员,毕业于西安交通大学,现主要研究方向为深度学习的模型压缩技术,目前已在AAAI,EMNLP,ACM MM等发表多篇论文。

主题提纲

LLMC:大语言模型压缩工具的开发实践

1、大模型压缩及量化风险

2、大模型压缩包 LLMC 的框架设计

3、LLMC 落地实践和推理后端部署

4、自定义扩展新算法、模型及评测数据

直播时间

12月16日(周一)20:00 - 21:00

### 将Arrow格式数据集转换为适合LLaMA量化使用的格式 当使用`load_from_disk`方法加载Llama模型所需的数据集时,该方法会返回一个基于Apache Arrow格式的数据结构[^1]。为了使这些数据能够被用于后续的处理和训练过程,在某些情况下可能需要将其转换成其他更易于操作的形式。 #### 转换至Pandas DataFrame 一种常见的做法是先将Arrow表转化为Python中的Pandas `DataFrame`对象: ```python import pandas as pd from datasets import load_from_disk dataset_arrow = load_from_disk('path_to_dataset') # 加载箭头格式的数据集 df = dataset_arrow.to_pandas() # 转换成pandas dataframe ``` 这样做的好处是可以利用Pandas库丰富的功能来进行数据分析预处理工作;然而对于大规模数据而言可能会占用较多内存资源。 #### 使用PyTorch Tensor 如果目标是在深度学习框架下(比如PyTorch)进一步训练或微调模型,则可以考虑直接创建张量(tensor),这有助于提高效率并减少不必要的中间表示形式: ```python import torch from transformers import LlamaTokenizerFast tokenizer = LlamaTokenizerFast.from_pretrained('model_name') encoded_inputs = tokenizer(df['text'].tolist(), padding=True, truncation=True, return_tensors='pt') input_ids_tensor = encoded_inputs.input_ids # 获取输入ID对应的tensor attention_mask_tensor = encoded_inputs.attention_mask # 获取注意力掩码对应的tensor ``` 这里假设原始数据集中有一个名为"text"列包含了待编码的文字内容,并且已经安装了Transformers库来辅助完成tokenization任务。 #### 自定义Dataset类 针对特定应用场景还可以构建自定义的PyTorch Dataset子类以便更好地集成到整个机器学习流水线当中去: ```python class CustomTextDataset(torch.utils.data.Dataset): def __init__(self, encodings): self.encodings = encodings def __len__(self): return len(self.encodings['input_ids']) def __getitem__(self, idx): item = {key: val[idx] for key, val in self.encodings.items()} return item custom_dataset = CustomTextDataset(encoded_inputs) data_loader = torch.utils.data.DataLoader(custom_dataset, batch_size=8, shuffle=True) ``` 这种方法不仅提高了灵活性而且使得批处理更加高效。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值