вторник, 3 февраля 2026 г.

Augumentation,

Augumentation, 

Аугментация данных (Data Augmentation) в машинном обучении — это процесс искусственного увеличения объема и разнообразия обучающей выборки путем создания модифицированных копий уже существующих данных.
Это не просто «раздувание» датасета, а способ научить модель игнорировать несущественные изменения (например, поворот картинки) и фокусироваться на главных признаках объекта.
Зачем она нужна?
  1. Борьба с переобучением (Overfitting): Если данных мало, модель просто «зазубривает» их. Аугментация заставляет её обобщать правила, а не запоминать конкретные примеры.
  2. Экономия ресурсов: Сбор и разметка новых реальных данных — это дорого и долго. Аугментация позволяет получить «бесплатные» данные программным путем.
  3. Повышение устойчивости (Robustness): Модель учится распознавать объект в разных условиях: при плохом освещении, под углом или с помехами.
  4. Решение проблемы дисбаланса классов: Если примеров одного класса гораздо меньше, чем другого, можно искусственно «догенерировать» редкий класс.
Как это работает в разных областях?
1. Компьютерное зрение (самый частый кейс)
К изображениям применяют геометрические и цветовые трансформации:
  • Отражение (Flipping): Зеркальное отображение по горизонтали или вертикали.
  • Повороты (Rotation): Наклон объекта на определенный градус.
  • Масштабирование и обрезка (Scaling/Cropping): Приближение фрагмента фото.
  • Изменение цвета: Вариация яркости, контрастности или насыщенности.
  • Добавление шума: Наложение «зернистости», чтобы модель не терялась при плохом качестве фото.
2. Работа с текстом (NLP)
Тут всё сложнее, так как нельзя просто «повернуть» предложение, не потеряв смысл:
  • Замена синонимами: Замена случайных слов их аналогами из словаря.
  • Обратный перевод (Back Translation): Перевод текста на другой язык и обратно (например, Ru → En → Ru) для получения новой формулировки.
  • Случайное удаление/перестановка: Уборка лишних слов или изменение их порядка (если это допустимо).
3. Работа со звуком и сигналами
  • Изменение темпа и тональности: Ускорение или замедление записи.
  • Инъекция фонового шума: Добавление звуков улицы или помех.
Как выполняется аугментация?
  • Оффлайн (Offline): Вы создаете новые файлы заранее и сохраняете их на диск. Это увеличивает размер датасета физически.
  • На лету (Online/On-the-fly): Трансформации применяются прямо во время процесса обучения в оперативной памяти. Каждый раз нейросеть видит немного измененную версию исходного объекта.
Осторожно: Аугментация должна быть логичной. Например, если вы обучаете модель распознавать цифры «6» и «9», поворот на 180 градусов может всё испортить, превратив один класс в другой.

понедельник, 2 февраля 2026 г.

TsMixer

TsMixer

https://github.com/smrfeld/tsmixer-pytorch?tab=readme-ov-file

https://github.com/marcopeix/time-series-analysis/blob/master/TSMixer.ipynb

https://arxiv.org/abs/2303.06053

https://openreview.net/pdf?id=wbpxTuXgm0

https://github.com/marcopeix

https://github.com/search?q=tsmixer&type=repositories

------------------

https://yandex.ru/video/preview/1357919541650956840

https://yandex.ru/video/preview/16539307188576704335

https://yandex.ru/video/preview/5819898398243529650

https://yandex.ru/video/preview/1663241586578181068

TSMixer, Pdf, Medium

TSMixer, Pdf, Medium




G:\DownLoads\ML\TSMixer

TsMixer, AspNet, Deploy, ONNX, Video

TsMixer, AspNet, Deploy, ONNX

https://vkvideo.ru/playlist/-145052891_441/video-145052891_456247227?linked=1

https://drive.google.com/drive/folders/1ZOYpTUa82_jCcxIdTmyr0LXQfvaM9vIy

F:\downloads\Otus\ML\TsMixter

Я думаю что лучше будут сделать все в одном стэке технологий AspNetCore и не взаимодействоать с MLOps Python в реальном времени с обученной моделью. 1. Python MLOps - мы оставляем и выполняем в этой среде все необходимые действия для создания, обучения нейросетевой модели. Создаем универсальную модель. 2. Мы помещаем обученную модель в AspNetCore. Для использования этой модели в реальном времени. И в дальнейшем взаимодействие в реальном времени других проектов AspNetCore c этой моделью уже будет происходит в одинаковом стэке технологий. Поэтому нам будут доступны любые методы взаимодействия с этой моделью, потому что технология одна и та же.
  • Ваша идея — консолидировать ML‑логику внутри .NET‑экосистемы — вполне рациональна в ряде сценариев. Разберём плюсы, минусы, технические ограничения и практические способы реализации.

    Почему это может быть выгодно

    Ключевые преимущества:

    • Единый стек: нет межсервисных вызовов, очередей, контрактов API.

    • Простота деплоя: одно приложение вместо двух (или более) сервисов.

    • Низкая задержка: инференс выполняется в том же процессе, без HTTP/очередей.

    • Отладка: единый стек вызовов, общие логи, профилирование.

    • Безопасность: нет открытых API для ML‑модели.

    • Упрощённое CI/CD: один репозиторий, один пайплайн.

    Критические ограничения

    Что может помешать:

    1. Отсутствие .NET‑реализаций моделей

      • Многие современные архитектуры (LLaMA, Stable Diffusion, YOLO v8 и др.) существуют только в Python (PyTorch/TensorFlow/Hugging Face).

      • Порт на .NET часто невозможен или требует огромных усилий.

    2. Производительность инференса

      • Python‑фреймворки оптимизированы под GPU/TPU. В .NET аналоги (например, ONNX Runtime) могут уступать по скорости.

      • Для тяжёлых моделей (свыше 1 ГБ) задержка может стать неприемлемой.

    3. Обновление моделей

      • В Python можно быстро переобучить и деплоить новую версию. В .NET потребуется пересборка приложения.

    4. Экосистема ML‑инструментов

      • Нет аналогов MLflow, Weights & Biases, TensorBoard в .NET.

      • Сложность мониторинга drift данных, качества предсказаний.

    Технические варианты реализации

    Вариант 1. ONNX Runtime (универсальный формат)

    Как работает:

    1. Обучаете модель в Python (PyTorch/TensorFlow/scikit‑learn).

    2. Конвертируете в формат ONNX (torch.onnx.exporttf2onnx).

    3. Деплоите ONNX‑модель в ASP.NET Core.

    4. Используете Microsoft.ML.OnnxRuntime для инференса.

    Плюсы:

    • Поддержка GPU (CUDA, DirectML).

    • Кросс‑фреймворковый формат (PyTorch → ONNX → .NET).

    • Низкая задержка.

    Минусы:

    • Не все операции поддерживаются при конвертации.

    • Требуется тестирование на реальных данных.

    Пример кода (.NET):

    csharp
    using Microsoft.ML.OnnxRuntime;
    using Microsoft.ML.OnnxRuntime.Tensors;
    
    var session = new InferenceSession("model.onnx");
    var input = new DenseTensor<float>(new[] { 1, 784 }); // Пример для MNIST
    var inputs = new List<NamedOnnxValue> { NamedOnnxValue.CreateFromTensor("input", input) };
    var outputs = session.Run(inputs);
    

    Вариант 2. TensorFlow.NET (прямая интеграция)

    Как работает:

    • Используете библиотеку TensorFlow.NET для загрузки моделей TensorFlow/Keras.

    • Выполняете инференс напрямую в .NET.

    Плюсы:

    • Нет конвертации (работает с .pb.h5).

    • Полная совместимость с TF‑экосистемой.

    Минусы:

    • Меньшая производительность, чем в Python.

    • Ограниченная поддержка современных TF‑версий.

    Вариант 3. ML.NET (собственные модели)

    Как работает:

    • Обучаете модель внутри .NET с помощью ML.NET.

    • Деплоите как часть приложения.

    Плюсы:

    • Полный контроль над кодом.

    • Интеграция с DI, логами, метриками.

    Минусы:

    • Ограниченный набор алгоритмов (нет трансформеров, GAN и т.п.).

    • Подходит только для простых задач (классификация, регрессия).

    Когда это оправдано

    Выбирайте .NET‑инференс, если:

    • Модель небольшая (до 500 МБ) и не требует GPU.

    • Используется классический ML (логистическая регрессия, деревья решений).

    • Критична минимальная задержка (например, real‑time сканирование).

    • Команда владеет только .NET, нет Python‑специалистов.

    • Безопасность требует изоляции модели внутри приложения.

    Когда лучше оставить Python

    Не переводите в .NET, если:

    • Модель основана на трансформерах (BERT, GPT, CLIP).

    • Требуется GPU/TPU для инференса.

    • Планируются частые обновления модели.

    • Нужны инструменты MLOps (A/B‑тестирование, мониторинг drift).

    • Модель весит больше 1 ГБ.

    Практические рекомендации

    1. Протестируйте ONNX Runtime

      • Возьмите вашу Python‑модель, конвертируйте в ONNX, запустите в .NET.

      • Сравните скорость и точность с Python‑версией.

    2. Оцените размер модели

      • Если >500 МБ — подумайте о выделении в отдельный сервис.

    3. Продумайте обновление моделей

      • Как будете деплоить новую версию? Пересборка приложения или динамическая загрузка?

    4. Добавьте мониторинг

      • Логируйте входные данные, предсказания, время инференса.

      • Используйте IHostedService для фонового сбора метрик.

    5. Рассмотрите гибридный подход

      • Критичные модели оставьте в Python (через API).

      • Простые модели перенесите в .NET.

    Итог

    Ваш план возможен, но с оговорками:

    • ONNX Runtime — лучший компромисс для переноса Python‑моделей в .NET.

    • ML.NET подойдёт только для базовых сценариев.

    • TensorFlow.NET — рискованный выбор из‑за ограничений производительности.

    Рекомендация:

    1. Протестируйте ONNX‑конвертацию для вашей модели.

    2. Замерьте метрики (скорость, точность, потребление памяти).

    3. Если результаты удовлетворительны — переносите в ASP.NET Core.

    4. Если нет — оставьте Python‑сервис с REST/gRPC‑API.

  • Я планирую использовать tsmixer
  • Использование TSMixer в ASP.NET Core‑экосистеме

    TSMixer — современная архитектура для временных рядов (на базе трансформеров), изначально реализованная в Python (обычно на PyTorch/TensorFlow). Разберём, как интегрировать её в .NET‑проект с минимальными потерями.


    Почему прямой перенос в .NET сложен

    1. Нет native‑реализаций

      • TSMixer не входит в ML.NET, TensorFlow.NET или ONNX Model Zoo.

    2. Сложная архитектура

      • Смесь CNN и трансформерных блоков требует низкоуровневых операций, которые в .NET‑библиотеках могут быть неоптимизированы.

    3. Зависимости от Python‑экосистемы

      • Препроцессинг (Pandas, NumPy), аугментация, оценка — чаще всего на Python.


    Варианты интеграции

    Вариант 1. ONNX Runtime (оптимальный компромисс)

    Схема:

    1. Обучите TSMixer в Python (например, через tsmixer-pytorch).

    2. Экспортируйте в ONNX.

    3. Деплойте в ASP.NET Core через Microsoft.ML.OnnxRuntime.

    Шаги:

    1. Экспорт в ONNX (Python):

      python
      import torch
      from tsmixer import TSMixer
      
      model = TSMixer(...)
      model.eval()
      
      # Пример входного тензора
      dummy_input = torch.randn(1, seq_len, n_features)
      
      # Экспорт
      torch.onnx.export(
          model,
          dummy_input,
          "tsmixer.onnx",
          export_params=True,
          opset_version=14,
          do_constant_folding=True,
          input_names=["input"],
          output_names=["output"],
          dynamic_axes={"input": {0: "batch_size"}}
      )
      
    2. Инференс в .NET:

      csharp
      using Microsoft.ML.OnnxRuntime;
      using Microsoft.ML.OnnxRuntime.Tensors;
      
      var session = new InferenceSession("tsmixer.onnx");
      
      // Подготовка данных (seq_len × n_features)
      var input = new DenseTensor<float>(new[] { 1, seqLen, nFeatures });
      for (int i = 0; i < seqLen; i++)
          for (int j = 0; j < nFeatures; j++)
              input[0, i, j] = normalizedData[i, j];
      
      var inputs = new List<NamedOnnxValue> {
          NamedOnnxValue.CreateFromTensor("input", input)
      };
      
      using (var results = session.Run(inputs))
      {
          var output = results[0].AsTensor<float>();
          // Обработка предсказания
      }
      

    Плюсы:

    • Сохраняете Python‑обучение.

    • Минимальные изменения в .NET‑коде.

    • Поддержка GPU (через ONNX Runtime с CUDA).

    Минусы:

    • Не все операции TSMixer могут экспортироваться в ONNX.

    • Требуется тестирование точности после конвертации.


    Вариант 2. HTTP API (Python‑сервис + .NET‑клиент)

    Схема:

    1. Запустите TSMixer как FastAPI‑сервис на Python.

    2. Вызывайте его из ASP.NET Core через HttpClient.

    Python (FastAPI):

    python
    from fastapi import FastAPI, HTTPException
    import torch
    from tsmixer import TSMixer
    
    app = FastAPI()
    model = TSMixer(...).eval()
    
    @app.post("/predict")
    def predict(data: dict):
        x = torch.tensor(data["sequence"]).unsqueeze(0)  # (1, seq_len, n_features)
        with torch.no_grad():
            y = model(x)
        return {"prediction": y.squeeze().tolist()}
    

    .NET (клиент):

    csharp
    public async Task<float[]> PredictAsync(float[][] sequence)
    {
        var payload = new { sequence = sequence };
        var response = await _httpClient.PostAsJsonAsync("/predict", payload);
        var result = await response.Content.ReadFromJsonAsync<PredictionResponse>();
        return result.Prediction;
    }
    

    Плюсы:

    • Никаких ограничений на архитектуру модели.

    • Лёгкое обновление модели (передеплой Python‑сервиса).

    • Встроенные метрики (Prometheus в FastAPI).

    Минусы:

    • Задержка на HTTP‑запрос.

    • Дополнительная инфраструктура (сервис + API Gateway).


    Вариант 3. Docker‑контейнер с Python + IPC

    Схема:

    1. Упакуйте Python‑модель в контейнер с REST/gRPC‑API.

    2. Запустите рядом с .NET‑приложением (в Kubernetes/Docker Compose).

    3. Взаимодействуйте через локальный HTTP или Unix‑сокеты.

    Плюсы:

    • Изоляция зависимостей.

    • Масштабирование независимо от .NET‑сервиса.

    Минусы:

    • Сложность деплоя.

    • Мониторинг двух сервисов.


    Рекомендации

    1. Начните с ONNX Runtime

      • Протестируйте экспорт TSMixer и сравните точность с Python‑версией.

      • Если конвертация успешна — используйте в .NET.

    2. Если ONNX не подходит — FastAPI

      • Разверните Python‑сервис с TSMixer.

      • В .NET добавьте HttpClient с retry‑политикой.

    3. Для production — гибридный подход

      • Критичные по задержке модели — ONNX в .NET.

      • Сложные модели (например, ансамбли) — Python‑сервисы.

    4. Автоматизируйте пайплайн

      • После обучения в Python: экспорт в ONNX → копирование в .NET‑проект → деплой.

      • Используйте GitHub Actions/Azure Pipelines.


    Инструменты для мониторинга

    • ONNX: ONNX Model Checker, Netron (визуализация).

    • FastAPI: Prometheus + Grafana (задержка, ошибки).

    • .NET: Application Insights (логи, метрики).


    Итог:
    Для TSMixer в .NET‑экосистеме:

    1. Попробуйте ONNX — если работает, это самый чистый вариант.

    2. Иначе — FastAPI‑сервис — надёжно и масштабируемо.

    3. Не пытайтесь переписывать TSMixer на C# — слишком трудозатратно и неоптимально.