Фиксация случайности для воспроизводимых запусков
Контролируйте начальные значения генераторов случайных чисел в NumPy, PyTorch и Python
«Фиксация случайности для воспроизводимых запусков» — бесплатный урок MLOps Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MLOps Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MLOps Academy содержит 4 уроков всего.
Почему результаты запусков различаются
Машинное обучение использует случайность для перемешивания, разбиения и инициализации весов. При двух запусках вы получаете две разные модели. Фиксация начального значения делает случайность воспроизводимой. 🎲
Что такое начальное значение
Начальное значение — это исходное число для генератора случайных чисел. Одинаковое начальное значение на входе даёт одну и ту же последовательность случайных чисел на выходе.
Зафиксируйте случайность Python
Собственному модулю random в Python нужен вызов random.seed, чтобы перемешивание в обычном Python стало воспроизводимым.
import random
random.seed(42)Зафиксируйте случайность NumPy
Большая часть работы с данными проходит через NumPy, поэтому задайте np.random.seed, чтобы зафиксировать перемешивание массивов и выборку.
import numpy as np
np.random.seed(42)Зафиксируйте случайность PyTorch
Инициализация глубоких моделей и исключение связей используют генератор PyTorch, поэтому вызовите torch.manual_seed до создания модели.
import torch
torch.manual_seed(42)Не забудьте о GPU
У CUDA есть собственное состояние генератора случайных чисел, поэтому зафиксируйте его отдельно. cuda.manual_seed_all сразу охватывает все устройства GPU.
torch.cuda.manual_seed_all(42)Зафиксируйте разбиения scikit-learn
Передайте random_state функциям вроде train_test_split, чтобы одни и те же строки каждый раз попадали в одно и то же разбиение.
train_test_split(X, y, random_state=42)Одна вспомогательная функция для всего
Объедините все вызовы задания начального значения в одну функцию set_seed. Вызовите её один раз при запуске, чтобы ничего не забыть.
def set_seed(s):
random.seed(s)
np.random.seed(s)
torch.manual_seed(s)Принудительно включите детерминированные ядра
Некоторые ядра GPU остаются случайными даже после задания начального значения. Включите в PyTorch детерминированный режим, чтобы вычисления можно было повторить.
torch.use_deterministic_algorithms(True)Записывайте начальное значение
Всегда записывайте использованное начальное значение вместе с выполнением. Результату, который нельзя воспроизвести, нельзя доверять.
Воспроизводимость не означает одинаковое оборудование
Даже при одинаковых начальных значениях результаты могут различаться на разном оборудовании или при разных версиях библиотек. Для полной воспроизводимости зафиксируйте и их.
Быстрая проверка
Вы задали начальные значения для Python и NumPy, но модель PyTorch всё ещё меняется. Что вы упустили?
Итоги
Вы научились фиксировать каждый источник случайности: Python, NumPy, PyTorch, CUDA и sklearn, а затем записывать начальное значение для воспроизводимых выполнений. 🔁
Изучай Python с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Фиксация случайности для воспроизводимых запусков» бесплатный?
Да — полный текст урока «Фиксация случайности для воспроизводимых запусков» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MLOps Academy, подпишись на CoddyKit PRO. Курс MLOps Academy содержит 4 уроков всего.
Чему я научусь в уроке «Фиксация случайности для воспроизводимых запусков»?
Контролируйте начальные значения генераторов случайных чисел в NumPy, PyTorch и Python Ты практикуешь MLOps Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать MLOps Academy?
Предыдущий опыт не требуется. MLOps Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Фиксация случайности для воспроизводимых запусков»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке MLOps Academy?
Да. Каждый урок MLOps Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Фиксация зависимостей с помощью requirements.txt
- Изоляция проектов с помощью виртуальных окружений
- Фиксация случайности для воспроизводимых запусков
- Сохранение полной конфигурации запуска