in src/models.js [7561:7617]
static async from_pretrained(pretrained_model_name_or_path, {
progress_callback = null,
config = null,
cache_dir = null,
local_files_only = false,
revision = 'main',
model_file_name = null,
subfolder = 'onnx',
device = null,
dtype = null,
use_external_data_format = null,
session_options = {},
} = {}) {
const options = {
progress_callback,
config,
cache_dir,
local_files_only,
revision,
model_file_name,
subfolder,
device,
dtype,
use_external_data_format,
session_options,
}
options.config = await AutoConfig.from_pretrained(pretrained_model_name_or_path, options);
if (!this.MODEL_CLASS_MAPPINGS) {
throw new Error("`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: " + this.name);
}
const model_type = options.config.model_type;
for (const MODEL_CLASS_MAPPING of this.MODEL_CLASS_MAPPINGS) {
let modelInfo = MODEL_CLASS_MAPPING.get(model_type);
if (!modelInfo) {
// As a fallback, we check if model_type is specified as the exact class
for (const cls of MODEL_CLASS_MAPPING.values()) {
if (cls[0] === model_type) {
modelInfo = cls;
break;
}
}
if (!modelInfo) continue; // Item not found in this mapping
}
return await modelInfo[1].from_pretrained(pretrained_model_name_or_path, options);
}
if (this.BASE_IF_FAIL) {
if (!(CUSTOM_ARCHITECTURES.has(model_type))) {
console.warn(`Unknown model class "${model_type}", attempting to construct from base class.`);
}
return await PreTrainedModel.from_pretrained(pretrained_model_name_or_path, options);
} else {
throw Error(`Unsupported model type: ${model_type}`)
}
}