createModel method
Future<InferenceModel>
createModel({
- required ModelType modelType,
- int maxTokens = 1024,
- PreferredBackend? preferredBackend,
- List<
int> ? loraRanks,
override
Creates and returns a new InferenceModel instance.
modelType
— model type to create.
maxTokens
— maximum context length for the model.
preferredBackend
— backend preference (e.g., CPU, GPU).
loraRanks
— optional supported LoRA ranks.
Implementation
@override
Future<InferenceModel> createModel({
required ModelType modelType,
int maxTokens = 1024,
PreferredBackend? preferredBackend,
List<int>? loraRanks,
}) async {
if (_initCompleter case Completer<InferenceModel> completer) {
return completer.future;
}
final completer = _initCompleter = Completer<InferenceModel>();
final (
isModelInstalled,
isLoraInstalled,
File? modelFile,
File? loraFile
) = await (
modelManager.isModelInstalled,
modelManager.isLoraInstalled,
modelManager._modelFile,
modelManager._loraFile,
).wait;
if (!isModelInstalled || modelFile == null) {
completer.completeError(
Exception('Gemma Model is not installed yet. Use the `modelManager` to load the model first'),
);
return completer.future;
}
try {
await _platformService.createModel(
maxTokens: maxTokens,
modelPath: modelFile.path,
loraRanks: loraRanks ?? supportedLoraRanks,
preferredBackend: preferredBackend,
);
final model = _initializedModel = MobileInferenceModel(
maxTokens: maxTokens,
modelType: modelType,
modelManager: modelManager,
preferredBackend: preferredBackend,
supportedLoraRanks: loraRanks ?? supportedLoraRanks,
onClose: () {
_initializedModel = null;
_initCompleter = null;
},
);
completer.complete(model);
return model;
} catch (e, st) {
completer.completeError(e, st);
Error.throwWithStackTrace(e, st);
}
}