Format Conversion

Convert models between APR, SafeTensors, and GGUF formats.

Supported Conversions

FromToSupported
SafeTensorsAPR
GGUFAPR
APRGGUF
APRSafeTensors

Using AprConverter

use apr_cookbook::convert::{AprConverter, TensorData, DataType, ConversionMetadata};

// Create converter
let mut converter = AprConverter::new();

// Set metadata
converter.set_metadata(ConversionMetadata {
    name: Some("my-model".to_string()),
    architecture: Some("transformer".to_string()),
    ..Default::default()
});

// Add tensors
converter.add_tensor(TensorData {
    name: "embed.weight".to_string(),
    shape: vec![32000, 4096],
    dtype: DataType::F16,
    data: embedding_bytes,
});

// Generate APR
let apr_bytes = converter.to_apr()?;

Data Types

TypeSizeUse Case
F324 bytesFull precision
F162 bytesHalf precision
BF162 bytesBrain float
Q8_01 byte8-bit quantized
Q4_00.5 byte4-bit quantized

Checking Support

use apr_cookbook::convert::{AprConverter, ConversionFormat};

let supported = AprConverter::is_conversion_supported(
    ConversionFormat::Gguf,
    ConversionFormat::Apr
);
assert!(supported);

Format Detection

use apr_cookbook::convert::ConversionFormat;

let format = ConversionFormat::from_extension("safetensors");
assert_eq!(format, Some(ConversionFormat::SafeTensors));

let format = ConversionFormat::from_path("model.gguf");
assert_eq!(format, Some(ConversionFormat::Gguf));