MLOps Academy · Урок

Фиксация случайности для воспроизводимых запусков

Контролируйте начальные значения генераторов случайных чисел в NumPy, PyTorch и Python

Урок 3 из 413 шагов

«Фиксация случайности для воспроизводимых запусков» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Фиксация зависимостей с помощью requirements.txt
  2. Изоляция проектов с помощью виртуальных окружений
  3. Фиксация случайности для воспроизводимых запусков
  4. Сохранение полной конфигурации запуска
← Назад к MLOps Academy