feat(ml)!: customizable ML settings (#3891)

* consolidated endpoints, added live configuration

* added ml settings to server

* added settings dashboard

* updated deps, fixed typos

* simplified modelconfig

updated tests

* Added ml setting accordion for admin page

updated tests

* merge `clipText` and `clipVision`

* added face distance setting

clarified setting

* add clip mode in request, dropdown for face models

* polished ml settings

updated descriptions

* update clip field on error

* removed unused import

* add description for image classification threshold

* pin safetensors for arm wheel

updated poetry lock

* moved dto

* set model type only in ml repository

* revert form-data package install

use fetch instead of axios

* added slotted description with link

updated facial recognition description

clarified effect of disabling tasks

* validation before model load

* removed unnecessary getconfig call

* added migration

* updated api

updated api

updated api

---------

Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This commit is contained in:
Mert
2023-08-29 09:58:00 -04:00
committed by GitHub
parent 22f5e05060
commit bcc36d14a1
56 changed files with 2324 additions and 655 deletions

View File

@@ -5354,6 +5354,34 @@
],
"type": "object"
},
"CLIPConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"mode": {
"$ref": "#/components/schemas/CLIPMode"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"enabled",
"modelName"
],
"type": "object"
},
"CLIPMode": {
"enum": [
"vision",
"text"
],
"type": "string"
},
"ChangePasswordDto": {
"properties": {
"newPassword": {
@@ -5432,6 +5460,28 @@
],
"type": "object"
},
"ClassificationConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"minScore": {
"type": "integer"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"minScore",
"enabled",
"modelName"
],
"type": "object"
},
"CreateAlbumDto": {
"properties": {
"albumName": {
@@ -6144,6 +6194,14 @@
],
"type": "object"
},
"ModelType": {
"enum": [
"image-classification",
"facial-recognition",
"clip"
],
"type": "string"
},
"OAuthCallbackDto": {
"properties": {
"url": {
@@ -6323,6 +6381,32 @@
],
"type": "object"
},
"RecognitionConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"maxDistance": {
"type": "integer"
},
"minScore": {
"type": "integer"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"minScore",
"maxDistance",
"enabled",
"modelName"
],
"type": "object"
},
"SearchAlbumResponseDto": {
"properties": {
"count": {
@@ -6968,17 +7052,17 @@
},
"SystemConfigMachineLearningDto": {
"properties": {
"clipEncodeEnabled": {
"type": "boolean"
"classification": {
"$ref": "#/components/schemas/ClassificationConfig"
},
"clip": {
"$ref": "#/components/schemas/CLIPConfig"
},
"enabled": {
"type": "boolean"
},
"facialRecognitionEnabled": {
"type": "boolean"
},
"tagImageEnabled": {
"type": "boolean"
"facialRecognition": {
"$ref": "#/components/schemas/RecognitionConfig"
},
"url": {
"type": "string"
@@ -6987,9 +7071,9 @@
"required": [
"enabled",
"url",
"clipEncodeEnabled",
"facialRecognitionEnabled",
"tagImageEnabled"
"classification",
"clip",
"facialRecognition"
],
"type": "object"
},