Последнее обновление Scikit-LLM дает возможность тонкой настройки PaLM 2 — самого продвинутого LLM от Google.

Введение

Недавно Google открыла доступ к PaLM 2, своей самой продвинутой крупноязыковой модели. Как и другие модели, предварительно обученный PaLM 2 можно использовать для различных языковых задач: классификации, обобщения, ответов на вопросы и т. д. Кроме того, его можно точно настроить на пользовательских данных прямо в Google Cloud для повышенная предсказательная сила.

В этой статье мы предоставим подробное руководство по тонкой настройке Google PaLM 2 с Scikit-LLM, используяновые добавленные оценщики PaLM и PaLMClassifier. Это, пожалуй, самый простой метод, поскольку он предоставляет знакомый API, совместимый с scikit-learn.

Если вы не знакомы с Scikit-LLM, ознакомьтесь с моей предыдущей статьей о нем:



Настройка облака Google

В настоящее время единственный способ использовать PaLM 2 — через платформу Vertex AI. Поэтому необходимо создать учетную запись Google, войти в Google Cloud Console и создать проект Google Cloud. После создания проекта выберите этот проект из списка проектов рядом с логотипом Google Cloud (левый верхний угол). Затем найдите и выберите Vertex AI в строке поиска.

Когда вы окажетесь на главной странице Vertex AI, включите все рекомендуемые API. Обратите внимание, что это может занять несколько минут.

Наконец, нам нужно установить Google Cloud CLI на локальный компьютер, выполнив шаги из официальной документации, и установить учетные данные приложения по умолчанию, выполнив следующую команду:

gcloud auth application-default login

Если все работает правильно, вы должны увидеть следующую страницу в браузере:

Использование PaLM 2 с Scikit-LLM

В этом разделе мы увидим, как использовать доступные оценщики Scikit-LLM для взаимодействия с моделью PaLM 2 в Vertex AI.

  1. Установить Scikit-LLM
pip install scikit-llm

2. Установите идентификатор проекта, который можно найти в списке проектов.

from skllm.config import SKLLMConfig

SKLLMConfig.set_google_project("YOUR_PROJECT_ID")

3. Чтобы убедиться, что Scikit-LLM правильно подключен к Google Cloud, давайте попробуем запустить простую задачу нулевой классификации. В этой настройке мы еще не настраиваем модель, поэтому ее запуск займет всего несколько секунд.

from skllm import ZeroShotPaLMClassifier
from skllm.datasets import get_classification_dataset

X, y = get_classification_dataset()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)

clf = ZeroShotPaLMClassifier()
clf.fit(X_train, y_train)
labels = clf.predict(X_test)

print(labels)

Если все работает правильно, вы увидите список предсказанных меток (положительные/нейтральные/отрицательные).

Точная настройка PaLM 2 с помощью Scikit-LLM

Для тонкой настройки модели нам нужно иметь 64 ядра обучающего ресурса TPU v3 pod. По умолчанию эта квота установлена ​​на 0 ядер и должна быть увеличена. Для этого Перейти к квотам-› отфильтровать квоты для Ограниченное количество ядер pod TPU V3 для обучения изображений по регионам и выбрать регион europe-west4 (на данный момент только этот регион доступен для настройки PaLM).

Затем нажмите «Изменить квоты», установите ограничение на 64 и отправьте запрос. Поскольку все запросы обрабатываются службой поддержки Google вручную, увеличение квоты может занять несколько дней.

В принципе, настройка PaLM 2 на TPU осуществляется по обычной цене для обучения на заказной модели. Однако на момент написания этой статьи настройка PaLM 2 все еще находилась в стадии предварительного просмотра, поэтому все расходы снижены на 100%. Пожалуйста, проверьте текущий статус и цены перед обучением модели, чтобы избежать непредвиденных расходов.

Как только квота была увеличена, можно сразу приступать к тонкой настройке. Scikit-LLM предоставляет две модели: PaLMClassifier и PaLM. Разница между ними в том, что PaLMClassifier оптимизирован для задач классификации текста, тогда как PaLM можно обучать на произвольных парах ввода-вывода.

Пример 1: Классификация

Чтобы использовать PaLMClassifier, мы можем повторно использовать наш пример с нулевым выстрелом. Единственное, что нам нужно изменить, это заменить ZeroShotPaLMClassifier на PaLMClassifier. Количество шагов обновления можно выбрать, следуя официальным рекомендациям от Google.

from skllm import PaLMClassifier
from skllm.datasets import get_classification_dataset

X, y = get_classification_dataset()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5)

clf = PaLMClassifier(n_update_steps=100)
clf.fit(X_train, y_train)
labels = clf.predict(X_test)

print(labels)

Пример 2: Общая настройка

from skllm.models.palm import PaLM

X = ["Tell us something about Scikit-LLM" for _ in range(20)]
y = ["Scikit-LLM is awesome" for _ in range(20)]

model = PaLM(n_update_steps=100)
model.fit(X, y)
labels = model.predict(["Tell us something about Scikit-LLM"])

print(labels[0])

# > Scikit-LLM is awesome

За кулисами Scikit-LLM автоматически создаст конвейер настройки в Vertex AI. Как только начнется обучение, в терминале отобразится ссылка на пайплайн. Вы можете использовать его для мониторинга состояния задания.

Заключение

В этой статье мы рассмотрели один из самых простых вариантов тонкой настройки Google PaLM 2. Используя возможности Scikit-LLM, это можно сделать всего несколькими строками кода, следуя знакомому интерфейсу scikit-learn.

Если вы хотите узнать больше об инструментах Python, связанных с LLM, ознакомьтесь с моей предыдущей статьей о Dingo — микрофреймворке для создания простых агентов ИИ.