Осваиваем оценку LLM с MLflow: пошаговое руководство с Google Gemini
В этом руководстве показано, как использовать MLflow для оценки ответов Google Gemini на фактологические запросы с помощью интегрированных метрик, объединяя API OpenAI и Google.
Введение в MLflow для оценки LЛМ
MLflow — это универсальная open-source платформа для управления полным жизненным циклом машинного обучения. Ранее она использовалась для отслеживания экспериментов, логирования параметров и управления развертываниями. Недавно MLflow расширил возможности, добавив поддержку оценки больших языковых моделей (LLM).
Настройка зависимостей
В этом руководстве показано, как оценить производительность модели Google Gemini на фактических запросах с помощью MLflow. Для оценки также необходим OpenAI API, поскольку MLflow использует модели GPT для вычисления метрик, таких как сходство ответов и достоверность.
Для работы нужны ключи API от OpenAI и Google Gemini:
- Ключ OpenAI: https://platform.openai.com/settings/organization/api-keys
- Ключ Google Gemini: https://ai.google.dev/gemini-api/docs
Установите библиотеки командой:
pip install mlflow openai pandas google-genaiБезопасно установите переменные окружения с ключами:
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass('Введите ключ OpenAI API:')
os.environ["GOOGLE_API_KEY"] = getpass('Введите ключ Google API:')Подготовка данных для оценки
Создайте набор данных с фактологическими вопросами и правильными ответами для объективного сравнения с ответами Gemini.
import pandas as pd
eval_data = pd.DataFrame(
{
"inputs": [
"Кто разработал теорию общей относительности?",
"Каковы основные функции печени в организме человека?",
"Объясните значение кода состояния HTTP 404.",
"Какова температура кипения воды на уровне моря в градусах Цельсия?",
"Назовите крупнейшую планету в нашей солнечной системе.",
"Какой язык программирования используется для разработки iOS-приложений?",
],
"ground_truth": [
"Теорию общей относительности разработал Альберт Эйнштейн.",
"Печень участвует в детоксикации, синтезе белков и производстве биохимических веществ для пищеварения.",
"HTTP 404 означает 'Не найдено' — сервер не может найти запрашиваемый ресурс.",
"Температура кипения воды на уровне моря — 100 градусов Цельсия.",
"Юпитер — крупнейшая планета в нашей солнечной системе.",
"Swift — основной язык программирования для разработки iOS-приложений."
]
}
)Получение ответов от Gemini
Определите функцию для запроса модели Gemini 1.5 Flash через SDK Google Generative AI и примените её к каждому запросу.
from google import genai
client = genai.Client()
def gemini_completion(prompt: str) -> str:
response = client.models.generate_content(
model="gemini-1.5-flash",
contents=prompt
)
return response.text.strip()
eval_data["predictions"] = eval_data["inputs"].apply(gemini_completion)Оценка ответов Gemini с MLflow
Запустите сессию MLflow для оценки предсказаний Gemini по метрикам answer_similarity, exact_match, latency и token_count.
import mlflow
mlflow.set_tracking_uri("mlruns")
mlflow.set_experiment("Gemini Simple Metrics Eval")
with mlflow.start_run():
results = mlflow.evaluate(
model_type="question-answering",
data=eval_data,
predictions="predictions",
targets="ground_truth",
extra_metrics=[
mlflow.metrics.genai.answer_similarity(),
mlflow.metrics.exact_match(),
mlflow.metrics.latency(),
mlflow.metrics.token_count()
]
)
print("Агрегированные метрики:")
print(results.metrics)
results.tables["eval_results_table"].to_csv("gemini_eval_results.csv", index=False)Просмотр подробных результатов
Загрузите и отобразите сохранённые подробные результаты для детального анализа.
results = pd.read_csv('gemini_eval_results.csv')
pd.set_option('display.max_colwidth', None)
resultsЭто практическое руководство поможет эффективно и прозрачно оценивать модели LLM, такие как Gemini, используя встроенные метрики и API MLflow.
Switch Language
Read this article in English