Mlflow-это мощная платформа с открытым исходным кодом для управления жизненным циклом машинного обучения. Несмотря на то, что он традиционно используется для отслеживания модельных экспериментов, параметров регистрации и управления развертываниями, Mlflow недавно ввел поддержку для оценки крупных языковых моделей (LLMS).
В этом уроке мы исследуем, как использовать Mlflow для оценки производительности LLM-в нашем случае, модели Google Gemini-на наборе подсказок, основанных на фактах. Мы создадим ответы на подсказки на основе фактов с использованием Близнецов и оценим их качество, используя различные показатели, поддерживаемые непосредственно MLFLOW.
Настройка зависимости
Для этого урока мы будем использовать API как OpenAI, так и API Gemini. Встроенные генеративные показатели оценки ИИ Mlflow в настоящее время полагаются на модели Openai (например, GPT-4), чтобы выступать в качестве судей для таких показателей, как сходство ответов или верность, поэтому требуется ключ API OpenAI. Вы можете получить:
Установка библиотек
pip install mlflow openai pandas google-genai
Установка клавиш OpenAI и Google API в качестве переменной среды
import os
from getpass import getpass
os.environ("OPENAI_API_KEY") = getpass('Enter OpenAI API Key:')
os.environ("GOOGLE_API_KEY") = getpass('Enter Google API Key:')
Подготовка данных оценки и получение выходов из Близнецов
import mlflow
import openai
import os
import pandas as pd
from google import genai
Создание данных оценки
На этом этапе мы определяем небольшой набор данных оценки, содержащий фактические подсказки вместе с их правильными ответами на основание правды. Эти подсказки охватывают такие темы, как наука, здоровье, веб -разработка и программирование. Этот структурированный формат позволяет нам объективно сравнивать сгенерированные Близнецами ответы с известными правильными ответами, используя различные показатели оценки в MlFlow.
eval_data = pd.DataFrame(
{
"inputs": (
"Who developed the theory of general relativity?",
"What are the primary functions of the liver in the human body?",
"Explain what HTTP status code 404 means.",
"What is the boiling point of water at sea level in Celsius?",
"Name the largest planet in our solar system.",
"What programming language is primarily used for developing iOS apps?",
),
"ground_truth": (
"Albert Einstein developed the theory of general relativity.",
"The liver helps in detoxification, protein synthesis, and production of biochemicals necessary for digestion.",
"HTTP 404 means 'Not Found' -- the server can't find the requested resource.",
"The boiling point of water at sea level is 100 degrees Celsius.",
"Jupiter is the largest planet in our solar system.",
"Swift is the primary programming language used for iOS app development."
)
}
)
eval_data
Получение ответов Близнецов
Этот кодовый блок определяет вспомогательную функцию Gemini_completion (), которая отправляет подсказку для модели Flash Gemini 1.5 с использованием Google Generative AI SDK и возвращает сгенерированный ответ в качестве простого текста. Затем мы применяем эту функцию к каждой подсказке в нашем наборе данных оценки для генерации прогнозов модели, сохраняя их в новом столбце «прогнозы». Эти прогнозы впоследствии будут оцениваться по основной истинной ответы
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)
eval_data
Оценка выходов Близнецов с помощью mlflow
На этом этапе мы инициируем запуск MLFLOW, чтобы оценить ответы, генерируемые моделью Близнецов, против набора фактических ответов на землю. Мы используем метод mlflow.evaluate () с четырьмя легкими показателями: Ответ_симилар (измерение семантического сходства между выходом модели и основной истиной), exat_match (Проверка совпадений с словесным словом), задержка (отслеживание времени генерации ответов) и token_count (регистрирует количество выходных токенов).
Важно отметить, что Ответ_симилар Метрика внутренне использует Openai’s GPT Модель, чтобы судить о семантической близости между ответами, поэтому требуется доступ к API OpenAI. Эта настройка обеспечивает эффективный способ оценки выходов LLM, не полагаясь на пользовательскую логику оценки. Окончательные результаты оценки напечатаны, а также сохраняются в файле CSV для более поздней проверки или визуализации.
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("Aggregated Metrics:")
print(results.metrics)
# Save detailed table
results.tables("eval_results_table").to_csv("gemini_eval_results.csv", index=False)
Чтобы просмотреть подробные результаты нашей оценки, мы загружаем сохраненный файл CSV в DataFrame и настраиваем настройки дисплея, чтобы обеспечить полную видимость каждого ответа. Это позволяет нам проверять отдельные подсказки, предсказания, сгенерированные Близнецом, ответы на основу истины и связанные с ними показатели метрики без усечения, что особенно полезно в тетради, таких как Colab или Jupyter.
results = pd.read_csv('gemini_eval_results.csv')
pd.set_option('display.max_colwidth', None)
results
Проверьте Коды здесьПолем Весь кредит на это исследование направлено на исследователей этого проекта. Кроме того, не стесняйтесь следить за нами Twitter И не забудьте присоединиться к нашему 100K+ ML Subreddit и подписаться на Наша информационный бюллетеньПолем
Я выпускник гражданского строительства (2022) из Jamia Millia Islamia, Нью -Дели, и у меня интерес к науке о данных, особенно в нейронных сетях и их применении в различных областях.
