Почему вывод LLM на основе PyTorch остается недетерминированным во время вывода даже при фиксированных начальных числах Python

Программы на Python
Ответить
Anonymous
 Почему вывод LLM на основе PyTorch остается недетерминированным во время вывода даже при фиксированных начальных числах

Сообщение Anonymous »

Я выполняю вывод на локально размещенной большой языковой модели с помощью PyTorch. Одно и то же приглашение передается неоднократно с одинаковыми параметрами генерации, однако сгенерированные выходные данные немного различаются при каждом запуске.

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»