2023-09-11 23:49:30 +02:00
|
|
|
from modules import shared
|
2023-11-08 05:58:06 +01:00
|
|
|
from modules.models import load_model, unload_model
|
|
|
|
from modules.models_settings import get_model_metadata, update_model_parameters
|
2023-09-11 23:49:30 +02:00
|
|
|
from modules.utils import get_available_models
|
2023-07-11 23:50:08 +02:00
|
|
|
|
2023-07-12 20:33:25 +02:00
|
|
|
|
2023-11-08 03:59:02 +01:00
|
|
|
def get_current_model_info():
|
|
|
|
return {
|
|
|
|
'model_name': shared.model_name,
|
|
|
|
'lora_names': shared.lora_names
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2023-11-08 04:59:27 +01:00
|
|
|
def list_models():
|
|
|
|
result = {
|
2023-07-11 23:50:08 +02:00
|
|
|
"object": "list",
|
2023-11-08 04:59:27 +01:00
|
|
|
"data": []
|
2023-07-11 23:50:08 +02:00
|
|
|
}
|
|
|
|
|
2023-11-08 04:59:27 +01:00
|
|
|
for model in get_dummy_models() + get_available_models()[1:]:
|
|
|
|
result["data"].append(model_info_dict(model))
|
2023-07-11 23:50:08 +02:00
|
|
|
|
2023-11-08 04:59:27 +01:00
|
|
|
return result
|
2023-07-11 23:50:08 +02:00
|
|
|
|
2023-11-08 04:59:27 +01:00
|
|
|
|
|
|
|
def model_info_dict(model_name: str) -> dict:
|
2023-07-11 23:50:08 +02:00
|
|
|
return {
|
|
|
|
"id": model_name,
|
|
|
|
"object": "model",
|
2023-11-08 04:59:27 +01:00
|
|
|
"created": 0,
|
|
|
|
"owned_by": "user"
|
2023-07-11 23:50:08 +02:00
|
|
|
}
|
2023-11-08 04:59:27 +01:00
|
|
|
|
|
|
|
|
|
|
|
def get_dummy_models() -> list:
|
|
|
|
return [ # these are expected by so much, so include some here as a dummy
|
|
|
|
'gpt-3.5-turbo',
|
|
|
|
'text-embedding-ada-002',
|
|
|
|
]
|
2023-11-08 05:58:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
def _load_model(data):
|
|
|
|
model_name = data["model_name"]
|
|
|
|
args = data["args"]
|
|
|
|
settings = data["settings"]
|
|
|
|
|
|
|
|
unload_model()
|
|
|
|
model_settings = get_model_metadata(model_name)
|
2023-11-09 02:41:12 +01:00
|
|
|
update_model_parameters(model_settings)
|
2023-11-08 05:58:06 +01:00
|
|
|
|
|
|
|
# Update shared.args with custom model loading settings
|
|
|
|
if args:
|
|
|
|
for k in args:
|
2023-11-08 06:34:13 +01:00
|
|
|
if hasattr(shared.args, k):
|
2023-11-08 05:58:06 +01:00
|
|
|
setattr(shared.args, k, args[k])
|
|
|
|
|
|
|
|
shared.model, shared.tokenizer = load_model(model_name)
|
2023-11-10 04:16:38 +01:00
|
|
|
shared.model_name = model_name
|
2023-11-10 16:34:27 +01:00
|
|
|
|
2023-11-08 05:58:06 +01:00
|
|
|
# Update shared.settings with custom generation defaults
|
|
|
|
if settings:
|
|
|
|
for k in settings:
|
|
|
|
if k in shared.settings:
|
|
|
|
shared.settings[k] = settings[k]
|