Код: Выделить всё
import random
import torch
random.seed(42)
torch.manual_seed(42)
response = model.generate(
prompt="Generate a concise Salesforce Apex trigger example",
do_sample=False,
temperature=0,
top_p=1.0,
)
При фиксированных случайных начальных числах и жадном декодировании (do_sample=False, температура=0) повторяющиеся вызовы вывода с использованием одних и тех же входных данных должны давать идентичные выходные данные.
Фактическое поведение
Сгенерированный текст немного отличается между запусками (формулировка и структура предложения), даже если:
Одна и та же версия модели используется
Потоковая передача отключена
Процесс перезапускается
Входные данные не изменяются
Изменчивость становится более заметной, когда запросы на вывод выполняются одновременно на одном и том же графическом процессоре.
Что я пробовал
Установка случайных начальных чисел Python и PyTorch
Отключение выборки через температуру = 0 и top_p=1.0
Проверка весов модели и версий токенизатора
Выполнение вывода в режиме оценки
Ни один из этих шагов полностью не устраняет различия в выходных данных.
Вопрос
Какие конкретные операции PyTorch или CUDA, используемые во время вывода преобразователя, по умолчанию недетерминированы, и какие именно ограничения конфигурации или выполнения требуются гарантировать детерминированную генерацию токенов при запуске на графическом процессоре?
Подробнее здесь: https://stackoverflow.com/questions/798 ... nference-e
Мобильная версия