Create a VarBuilder that transparently dequantizes FP8 weights. # Safety Inherits the mmap safety requirements from `MmapedSafetensors`.
(
filenames: &[std::path::PathBuf],
dtype: DType,
device: &Device,
)
| 136 | /// |
| 137 | /// Inherits the mmap safety requirements from `MmapedSafetensors`. |
| 138 | pub unsafe fn load_fp8_var_builder<'a>( |
| 139 | filenames: &[std::path::PathBuf], |
| 140 | dtype: DType, |
| 141 | device: &Device, |
| 142 | ) -> anyhow::Result<VarBuilder<'a>> { |
| 143 | let inner = MmapedSafetensors::multi(filenames)?; |
| 144 | |
| 145 | let fp8_count = inner |
| 146 | .tensors() |
| 147 | .iter() |
| 148 | .filter(|(_, v)| v.dtype() == safetensors::tensor::Dtype::F8_E4M3) |
| 149 | .count(); |
| 150 | log::info!( |
| 151 | "FP8 model detected: {} tensors will be dequantized at load time", |
| 152 | fp8_count |
| 153 | ); |
| 154 | |
| 155 | let backend: Box<dyn SimpleBackend> = Box::new(Fp8Backend { inner }); |
| 156 | Ok(VarBuilder::from_backend(backend, dtype, device.clone())) |
| 157 | } |
| 158 | |
| 159 | // ─── Fp8Linear: reusable FP8-aware Linear layer ───────────────────────────── |
| 160 |
no test coverage detected