Itinai.com it company office background blured photography by 0886cea9 2edb 4eed 9e82 9c1d1d86fcce 3

Создание надежного конвейера машинного обучения с использованием MLE-Agent и Ollama локально

Itinai.com it company office background blured photography by 0886cea9 2edb 4eed 9e82 9c1d1d86fcce 3

Построение надежного сквозного ML-пайплайна с использованием MLE-Agent и Ollama локально

В этой статье мы рассмотрим, как объединить MLE-Agent с Ollama для создания полностью локального рабочего процесса машинного обучения без зависимости от API. Мы создадим воспроизводимую среду, сгенерируем небольшой синтетический набор данных и направим агента на написание обучающего скрипта. Эта методика позволит нам поддерживать плавный рабочий процесс и воспользоваться преимуществами автоматизации.

Настройка окружения

Первым шагом является настройка рабочего пространства. Мы установим необходимые зависимости Python и запустим Ollama локально. Это позволит нам избежать проблем с управлением зависимостями и обеспечит надежность кода. Чтобы начать, выполните следующие команды:

import os, re, time, textwrap, subprocess, sys
from pathlib import Path

def sh(cmd, check=True, env=None, cwd=None):
    print(f"$ {cmd}")
    p = subprocess.run(cmd, shell=True, env={**os.environ, **(env or {})} if env else None,
                       cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
    print(p.stdout)
    if check and p.returncode != 0: raise RuntimeError(p.stdout)
    return p.stdout

WORK = Path("/content/mle_colab_demo"); WORK.mkdir(parents=True, exist_ok=True)
PROJ = WORK/"proj"; PROJ.mkdir(exist_ok=True)
DATA = WORK/"data.csv"; MODEL = WORK/"model.joblib"; PREDS = WORK/"preds.csv"
SAFE = WORK/"train_safe.py"; RAW = WORK/"agent_train_raw.py"; FINAL = WORK/"train.py"
MODEL_NAME = os.environ.get("OLLAMA_MODEL", "llama3.2:1b")

sh("pip -q install --upgrade pip")
sh("pip -q install mle-agent==0.4.* scikit-learn pandas numpy joblib")
sh("curl -fsSL https://ollama.com/install.sh | sh")
sv = subprocess.Popen("ollama serve", shell=True)
time.sleep(4); sh(f"ollama pull {MODEL_NAME}")

Генерация набора данных

Далее мы создадим небольшой помеченный набор данных, который будет использоваться для обучения нашей модели. Это поможет нам проверить эффективность нашего пайплайна. Используйте следующий код:

import numpy as np, pandas as pd
np.random.seed(0)
n = 500; X = np.random.rand(n, 4); y = (X @ np.array([0.4, -0.2, 0.1, 0.5]) + 0.15 * np.random.randn(n) > 0.55).astype(int)
pd.DataFrame(np.c_[X, y], columns=["f1", "f2", "f3", "f4", "target"]).to_csv(DATA, index=False)

Теперь, когда у нас есть набор данных, мы можем настроить окружение для MLE-Agent и задать ему задание на написание скрипта для обучения.

Санитизация сгенерированного кода

Важно убедиться, что сгенерированный скрипт корректен. Мы исправим распространенные ошибки импорта и добавим необходимые зависимости. Вот пример кода, который можно использовать:

def sanitize(src: str) -> str:
    if not src: return ""
    s = src
    fixes = {
        r"froms+sklearn.pipelines+imports+SimpleImputer": "from sklearn.impute import SimpleImputer",
        r"froms+sklearn.preprocessing+imports+StandardScaler": "from sklearn.preprocessing import StandardScaler",
        # добавьте другие фиксированные случаи
    }
    for pat, rep in fixes.items(): s = re.sub(pat, rep, s)
    return s

После этого мы можем запустить наш финальный скрипт, который будет обучать модель и сохранять результаты. Это гарантирует, что мы получим надежный и работоспособный код.

Заключение

В этой статье мы показали, как интегрировать локальные языковые модели с традиционными пайплайнами машинного обучения, обеспечивая надежность и безопасность. Следуя этому процессу, мы можем контролировать выполнение, избегать внешних ключей и использовать автоматизацию для реального обучения моделей.

Не забывайте следить за последними обновлениями на нашем сайте и участвовать в обсуждениях, чтобы быть в курсе самых актуальных новостей в области машинного обучения.

Новости в сфере искусственного интеллекта