import type { CredentialsParams, RepoDesignation } from "../types/public"; import type { SetRequired } from "../vendor/type-fest/set-required"; export declare const SAFETENSORS_FILE = "model.safetensors"; export declare const SAFETENSORS_INDEX_FILE = "model.safetensors.index.json"; export declare const RE_SAFETENSORS_FILE: RegExp; export declare const RE_SAFETENSORS_INDEX_FILE: RegExp; export declare const RE_SAFETENSORS_SHARD_FILE: RegExp; export interface SafetensorsShardFileInfo { prefix: string; basePrefix: string; shard: string; total: string; } export declare function parseSafetensorsShardFilename(filename: string): SafetensorsShardFileInfo | null; type FileName = string; export type TensorName = string; export type Dtype = "F64" | "F32" | "F16" | "F8_E4M3" | "F8_E5M2" | "E8M0" | "F6_E3M2" | "F6_E2M3" | "F4" | "FP4" | "BF16" | "I64" | "I32" | "I16" | "I8" | "U16" | "U8" | "UE8" | "BOOL"; export interface TensorInfo { dtype: Dtype; shape: number[]; data_offsets: [number, number]; } export type SafetensorsFileHeader = Record & { __metadata__: { total_parameters?: string | number; } & Record; }; export interface SafetensorsIndexJson { dtype?: string; metadata?: { total_parameters?: string | number; } & Record; weight_map: Record; } export type SafetensorsShardedHeaders = Record; export type SafetensorsParseFromRepo = { sharded: false; header: SafetensorsFileHeader; parameterCount?: Partial>; parameterTotal?: number; filepaths: string[]; } | { sharded: true; index: SafetensorsIndexJson; headers: SafetensorsShardedHeaders; parameterCount?: Partial>; parameterTotal?: number; filepaths: string[]; }; /** * Analyze model.safetensors.index.json or model.safetensors from a model hosted * on Hugging Face using smart range requests to extract its metadata. */ export declare function parseSafetensorsMetadata(params: { /** Only models are supported */ repo: RepoDesignation; /** * Relative file path to safetensors file inside `repo`. Defaults to `SAFETENSORS_FILE` or `SAFETENSORS_INDEX_FILE` (whichever one exists). */ path?: string; /** * Will include SafetensorsParseFromRepo["parameterCount"], an object containing the number of parameters for each DType * * @default false */ computeParametersCount: true; hubUrl?: string; revision?: string; /** * Custom fetch function to use instead of the default one, for example to use a proxy or edit headers. */ fetch?: typeof fetch; } & Partial): Promise>; export declare function parseSafetensorsMetadata(params: { /** Only models are supported */ repo: RepoDesignation; path?: string; /** * Will include SafetensorsParseFromRepo["parameterCount"], an object containing the number of parameters for each DType * * @default false */ computeParametersCount?: boolean; hubUrl?: string; revision?: string; /** * Custom fetch function to use instead of the default one, for example to use a proxy or edit headers. */ fetch?: typeof fetch; } & Partial): Promise; export interface QuantizationConfig { quant_method?: string; modules_to_not_convert?: string[]; bits?: number; load_in_4bit?: boolean; load_in_8bit?: boolean; format?: string; config_groups?: Record; } export interface ModelConfig { quantization_config?: QuantizationConfig; text_config?: { quantization_config?: QuantizationConfig; }; } /** * @internal * Glob match without RegExp: splits pattern on `*` and checks that each literal * segment appears in order within `str`. Avoids RegExp entirely (no ReDoS risk, * no SyntaxError from attacker-controlled patterns in config.json). */ export declare function globMatch(pattern: string, str: string): boolean; /** * Determines if a tensor is quantized based on quantization config and tensor name. * * Python's transformers uses plain substring matching for `modules_to_not_convert`, * so bare names like `"lm_head"` must match `"model.lm_head.weight"`. When the * pattern contains a `*` we fall back to proper glob matching for flexibility. */ export declare function isQuantizedTensor(tensorName: string, quantConfig?: QuantizationConfig): boolean; export {}; //# sourceMappingURL=parse-safetensors-metadata.d.ts.map