78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# Model Ingest
|
|
|
|
Цель: принять новую модель от пользователя, агента или внешнего источника без ручного копирования в реестр.
|
|
|
|
## UI
|
|
|
|
Локальный кабинет моделей доступен в Model Chat Testbench:
|
|
|
|
```text
|
|
http://127.0.0.1:8765
|
|
```
|
|
|
|
Блок `Модели` поддерживает:
|
|
|
|
- загрузку файла из браузера;
|
|
- заявку на импорт из URL;
|
|
- заявку на импорт из пути, доступного серверу;
|
|
- просмотр последних ingest jobs.
|
|
|
|
## API
|
|
|
|
Последние заявки:
|
|
|
|
```powershell
|
|
curl http://127.0.0.1:8765/api/model-ingest/jobs
|
|
```
|
|
|
|
Загрузить файл raw stream:
|
|
|
|
```powershell
|
|
curl -X POST "http://127.0.0.1:8765/api/model-ingest/upload?model_id=my-model&plugin=1c&format=gguf&filename=model.gguf" `
|
|
--data-binary "@model.gguf"
|
|
```
|
|
|
|
Попросить сервер скачать из URL или импортировать путь:
|
|
|
|
```powershell
|
|
curl -X POST http://127.0.0.1:8765/api/model-ingest/source `
|
|
-H "Content-Type: application/json" `
|
|
-d "{\"model_id\":\"my-model\",\"plugin\":\"1c\",\"format\":\"gguf\",\"source\":\"https://example/model.gguf\"}"
|
|
```
|
|
|
|
## Storage
|
|
|
|
Файлы складываются в:
|
|
|
|
```text
|
|
models/incoming/<job_id>/
|
|
```
|
|
|
|
Метаданные задания:
|
|
|
|
```text
|
|
models/incoming/<job_id>/metadata.json
|
|
```
|
|
|
|
Журнал:
|
|
|
|
```text
|
|
reports/model-ingest/jobs.jsonl
|
|
```
|
|
|
|
## Promotion
|
|
|
|
После проверки размера, checksum, лицензии и runtime модель нужно вручную промоутить:
|
|
|
|
1. Перенести файл из `models/incoming/<job_id>/` в целевую папку `models/...`.
|
|
2. Создать или обновить `registry/model-cards/<model_id>.yaml`.
|
|
3. Запустить:
|
|
|
|
```powershell
|
|
python scripts/validate_model_cards.py
|
|
python scripts/build_model_index.py
|
|
python scripts/check_model_storage.py --warn-only
|
|
```
|
|
|
|
Пароли к NAS, Hugging Face токены и другие секреты не записываются в ingest job и не должны попадать в model card.
|