forge/serialization/
mod.rs1use std::path::Path;
9
10use safetensors::tensor::{Dtype, TensorView};
11
12use crate::error::{ForgeError, Result};
13
14pub fn save_safetensors(
17 path: impl AsRef<Path>,
18 entries: &[(String, Vec<usize>, Vec<f32>)],
19) -> Result<()> {
20 let views: Vec<(String, TensorView<'_>)> = entries
21 .iter()
22 .map(|(name, shape, data)| {
23 TensorView::new(Dtype::F32, shape.clone(), bytemuck::cast_slice(data))
24 .map(|v| (name.clone(), v))
25 .map_err(|e| ForgeError::SafeTensors(format!("{name}: {e}")))
26 })
27 .collect::<Result<_>>()?;
28 safetensors::serialize_to_file(views, &None, path.as_ref())
29 .map_err(|e| ForgeError::SafeTensors(format!("{}: {e}", path.as_ref().display())))
30}