gRPC-сервис инференса моделей
Runtime ML-gating обращается к Python gRPC сервису инференса.
Внешний интерфейс:
@tradejs/node- gRPC контракт
Predict(PredictRequest/PredictResponse)
Запуск / остановка
Запускайте и останавливайте inference-сервис вашим deployment-инструментом (Docker/Kubernetes/systemd и т.д.).
Адрес по умолчанию:
127.0.0.1:50051
Адрес для runtime:
ML_GRPC_ADDRESS=127.0.0.1:50051
RPC контракт
PredictRequest:
strategy(string)features(map<string,double>)threshold(double)
PredictResponse:
probabilitythresholdpassed
Загрузка моделей
Сервис ищет модели в MODEL_DIR:
- ensemble aliases:
<Strategy>.modelN.joblib - single alias:
<Strategy>.joblib
Если найдены ensemble-файлы, вероятность усредняется по всем участникам.
Типичный локальный сценарий:
- обученные модели лежат в
./data/ml/models - контейнер запущен с
MODEL_DIR=/app/data/ml/models - хост-папка
./dataсмонтирована в/app/dataдля infer-контейнера
Поэтому aliases после тренировки (./data/ml/models/<Strategy>.joblib) сразу доступны inference-сервису.
Интеграция в runtime
На стороне runtime, ML-gating:
- Строит ML payload из сигнала.
- Применяет тот же trim policy, что и train (
trimMlTrainingRowWindows(..., 5)). - Удаляет non-feature поля.
- Вызывает gRPC
Predict.
Если сервис недоступен, runtime пишет ошибку в лог и возвращает null для ML-решения.
Проверка доступности
npx @tradejs/cli doctor --require-ml