llmcompressor.pipelines.cache
类
-
IntermediateValue–数据类,递归定义了要卸载的值以及要加载到的设备
-
IntermediatesCache–缓存,存储由批量、顺序生成的中间值(激活)
IntermediateValue dataclass
数据类,递归定义了要卸载的值以及要加载到的设备
参数
-
(值Union[Tensor, IntermediateValue, Any]) –可以是卸载的 Tensor、基本值或可递归值
-
(deviceUnion[device, None]) –如果值是 Tensor,则为要加载 Tensor 的设备,否则为 None
IntermediatesCache
IntermediatesCache(
batch_intermediates: Optional[
List[IntermediateValues]
] = None,
offload_device: Optional[device] = "cpu",
)
缓存,存储由模型批量、顺序执行生成的中间值(激活)。值在存储在缓存中时被卸载到 offload_device,在从缓存中获取时被加载到其原始设备。如果 offload_device 为 None,则不会卸载值。
当前支持数据类实例和元组的嵌套卸载
使用 empty 和 from_dataloader 类方法进行构建
方法
-
append–将新值追加到缓存。新值将被分配下一个
-
delete–从缓存中删除值
-
empty–构建一个空缓存
-
fetch–获取属于某个批次的值
-
from_dataloader–使用提供的 DataLoader 初始化缓存
-
size–返回缓存中已使用的内存,按设备分组,以字节为单位
-
update–更新/放置属于某个批次的值
源代码在 llmcompressor/pipelines/cache.py
append
将新值追加到缓存。新值将被分配下一个可用的批次索引
参数
-
(值Dict[str, Any]) –用于更新的键到值的字典映射
源代码在 llmcompressor/pipelines/cache.py
delete
从缓存中删除值
参数
-
(batch_indexint) –要删除其值的批次索引
-
(consumed_namesOptional[List[str]], 默认值:None) –要删除其值的键列表,默认为删除所有键
源代码在 llmcompressor/pipelines/cache.py
empty classmethod
构建一个空缓存
参数
-
(num_batchesint) –要存储的预期批次数
-
(offload_devicedevice) –要卸载值的设备
源代码在 llmcompressor/pipelines/cache.py
fetch
获取属于某个批次的值
参数
-
(batch_indexint) –正在获取其值的批次索引
-
(input_namesOptional[List[str]], 默认值:None) –要获取其值的键列表
返回
-
Dict[str, Any]–键到已加载值的字典映射
源代码在 llmcompressor/pipelines/cache.py
from_dataloader classmethod
from_dataloader(
dataloader: DataLoader,
model_device: device = torch.device("cpu"),
offload_device: Optional[device] = torch.device("cpu"),
)
使用提供的 DataLoader 初始化缓存
参数
-
(dataloaderDataLoader) –生成要缓存的值的 DataLoader
-
(model_devicedevice, default:device('cpu')) –获取时要将值加载到的设备
-
(offload_deviceOptional[device], default:device('cpu')) –要卸载值的设备
源代码在 llmcompressor/pipelines/cache.py
size
返回缓存中已使用的内存,按设备分组,以字节为单位
返回
-
Dict[device, int]–映射到缓存中字节数的 Torch 设备字典
源代码在 llmcompressor/pipelines/cache.py
update
更新/放置属于某个批次的值
参数
-
(batch_indexint) –要更新其值的批次索引
-
(值Dict[str, Any]) –用于更新的键到值的字典映射