Начало работы с MLflow для оценки больших языковых моделей

MLflow — это мощная платформа с открытым исходным кодом для управления жизненным циклом машинного обучения. Традиционно её используют для отслеживания экспериментов с моделями, регистрации параметров и управления развёртыванием. Недавно MLflow внедрила поддержку для оценки больших языковых моделей (LLM).

В этом руководстве мы рассмотрим, как использовать MLflow для оценки производительности LLM (в нашем случае — модели Google Gemini) на наборе запросов, основанных на фактах. Мы сгенерируем ответы на запросы, основанные на фактах, используя Gemini, и оценим их качество с помощью различных метрик, поддерживаемых непосредственно MLflow.

Настройка зависимостей

Для этого руководства мы будем использовать API OpenAI и Gemini. Встроенные метрики генеративного искусственного интеллекта MLflow в настоящее время полагаются на модели OpenAI (например, GPT-4) для оценки таких показателей, как сходство ответов или достоверность. Поэтому вам потребуется ключ API OpenAI. Вы можете получить:

* Ваш ключ API OpenAI с сайта https://platform.openai.com/settings/organization/api-keys.
* Ваш ключ API Google Gemini с сайта https://ai.google.dev/gemini-api/docs.

Установка библиотек

“`
pip install mlflow openai pandas google-genai
“`

Установка ключей API OpenAI и Google в качестве переменных среды

“`
import os
from getpass import getpass

os.environ[“OPENAIAPIKEY”] = getpass(‘Введите ключ API OpenAI:’)
os.environ[“GOOGLEAPIKEY”] = getpass(‘Введите ключ API Google:’)
“`

Подготовка данных для оценки и получение выходных данных от Gemini

“`
import mlflow
import openai
import os
import pandas as pd
from google import genai
“`

Создание данных для оценки

На этом этапе мы определяем небольшой набор данных для оценки, содержащий фактические запросы вместе с правильными ответами, соответствующими действительности. Эти запросы охватывают такие темы, как наука, здоровье, веб-разработка и программирование. Такой структурированный формат позволяет нам объективно сравнивать ответы, сгенерированные Gemini, с известными правильными ответами, используя различные метрики оценки в MLflow.

“`
eval_data = pd.DataFrame(
{
“inputs”: [
“Кто разработал теорию общей теории относительности?”,
“Каковы основные функции печени в организме человека?”,
“Объясните, что означает код состояния HTTP 404.”,
“Какова температура кипения воды на уровне моря в градусах Цельсия?”,
“Назовите самую большую планету в нашей Солнечной системе.”,
“Какой язык программирования в основном используется для разработки приложений iOS?”,
],
“ground_truth”: [
“Альберт Эйнштейн разработал теорию общей теории относительности.”,
“Печень помогает в детоксикации, синтезе белков и производстве биохимических веществ, необходимых для пищеварения.”,
“HTTP 404 означает ‘Не найдено’ — сервер не может найти запрошенный ресурс.”,
“Температура кипения воды на уровне моря составляет 100 градусов Цельсия.”,
“Юпитер — самая большая планета в нашей Солнечной системе.”,
“Swift — основной язык программирования, используемый для разработки приложений iOS.”
]
}
)

eval_data
“`

Получение ответов Gemini

Этот блок кода определяет вспомогательную функцию gemini_completion(), которая отправляет запрос в модель Gemini 1.5 Flash с помощью Google Generative AI SDK и возвращает сгенерированный ответ в виде обычного текста. Затем мы применяем эту функцию к каждому запросу в нашем наборе данных для оценки, чтобы сгенерировать прогнозы модели, сохраняя их в новом столбце «predictions». Эти прогнозы позже будут оценены по сравнению с правильными ответами.

“`
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()

evaldata[“predictions”] = evaldata[“inputs”].apply(gemini_completion)
eval_data
“`

Оценка выходных данных Gemini с помощью MLflow

На этом этапе мы инициируем запуск MLflow для оценки ответов, сгенерированных моделью Gemini, по сравнению с набором фактических ответов, соответствующих действительности. Мы используем метод mlflow.evaluate() с четырьмя лёгкими метриками: answersimilarity (измерение семантического сходства между выводом модели и истиной), exactmatch (проверка на совпадение слов в точности), latency (отслеживание времени генерации ответа) и token_count (регистрация количества выходных токенов).

Важно отметить, что метрика answer_similarity внутренне использует модель GPT от OpenAI для оценки семантической близости между ответами, поэтому требуется доступ к API OpenAI. Такая настройка обеспечивает эффективный способ оценки выходных данных LLM без использования специальной логики оценки. Окончательные результаты оценки выводятся на экран и сохраняются в CSV-файл для последующего изучения или визуализации.

“`
mlflow.settrackinguri(“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[“evalresultstable”].tocsv(“geminieval_results.csv”, index=False)
“`

Просмотр подробных результатов оценки

Чтобы просмотреть подробные результаты нашей оценки, мы загружаем сохранённый CSV-файл в DataFrame и настраиваем параметры отображения, чтобы обеспечить полную видимость каждого ответа. Это позволяет нам проверять отдельные запросы, прогнозы, сгенерированные Gemini, правильные ответы и связанные оценки метрик без усечения, что особенно полезно в таких средах, как Colab или Jupyter.

“`
results = pd.readcsv(‘geminieval_results.csv’)
pd.setoption(‘display.maxcolwidth’, None)
results
“`

1. Какие ключевые функции MLflow используются для оценки больших языковых моделей?

В статье описывается использование MLflow для оценки производительности больших языковых моделей (LLM), в частности модели Google Gemini. Для этого применяются встроенные метрики генеративного искусственного интеллекта MLflow, такие как answersimilarity (измерение семантического сходства между выводом модели и истиной), exactmatch (проверка на совпадение слов в точности), latency (отслеживание времени генерации ответа) и token_count (регистрация количества выходных токенов).

2. Какие шаги необходимо выполнить для настройки зависимостей при работе с MLflow и моделями Gemini?

Для работы с MLflow и моделью Gemini необходимо выполнить несколько шагов:
* Получить ключ API OpenAI с сайта https://platform.openai.com/settings/organization/api-keys.
* Получить ключ API Google Gemini с сайта https://ai.google.dev/gemini-api/docs.
* Установить библиотеки MLflow, OpenAI, Pandas и Google-genai с помощью команды pip install mlflow openai pandas google-genai.
* Установить ключи API OpenAI и Google в качестве переменных среды с помощью кода, приведённого в статье.

3. Какие метрики используются для оценки качества ответов модели Gemini в статье?

Для оценки качества ответов модели Gemini в статье используются следующие метрики:
* answer_similarity — измерение семантического сходства между выводом модели и истиной;
* exact_match — проверка на совпадение слов в точности;
* latency — отслеживание времени генерации ответа;
* token_count — регистрация количества выходных токенов.

4. Какие данные используются для оценки модели Gemini в статье?

Для оценки модели Gemini в статье используется набор данных, содержащий фактические запросы вместе с правильными ответами, соответствующими действительности. Эти запросы охватывают такие темы, как наука, здоровье, веб-разработка и программирование. Такой структурированный формат позволяет объективно сравнивать ответы, сгенерированные Gemini, с известными правильными ответами.

5. Как можно визуализировать результаты оценки модели Gemini?

Результаты оценки модели Gemini можно визуализировать, сохранив их в CSV-файл и загрузив в DataFrame с помощью Pandas. Затем можно настроить параметры отображения, чтобы обеспечить полную видимость каждого ответа. Это позволяет проверять отдельные запросы, прогнозы, сгенерированные Gemini, правильные ответы и связанные оценки метрик без усечения.

Источник

Оставьте комментарий