РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
669 of 769 menu

Функция cuda.manual_seed

Функция cuda.manual_seed устанавливает начальное значение (зерно) для генератора случайных чисел на текущем устройстве CUDA. Она принимает одно целочисленное значение в качестве параметра и инициализирует состояние генератора на активном GPU. Эта функция полезна для получения воспроизводимых результатов при генерации случайных тензоров на видеокарте, особенно в сочетании с функцией manual_seed для CPU.

Синтаксис

torch.cuda.manual_seed(seed)

Параметр seed - целое число, которое задаёт начальное состояние генератора случайных чисел. Оно может быть любым значением типа int.

Пример

Давайте зафиксируем зерно на GPU и сгенерируем два случайных тензора с помощью функции rand:

import torch torch.cuda.manual_seed(42) t1 = torch.rand(3, device='cuda') print(t1) t2 = torch.rand(3, device='cuda') print(t2)

Результат выполнения кода:

tensor([0.8823, 0.9150, 0.3829], device='cuda:0') tensor([0.9593, 0.3904, 0.6009], device='cuda:0')

При повторном запуске кода с тем же зерном значения тензоров будут полностью совпадать.

Пример

Покажем, как функция cuda.manual_seed работает совместно с manual_seed для обеспечения полной воспроизводимости на CPU и GPU:

import torch seed = 123 torch.manual_seed(seed) torch.cuda.manual_seed(seed) t_cpu = torch.rand(2) t_gpu = torch.rand(2, device='cuda') print(t_cpu) print(t_gpu)

Результат выполнения кода:

tensor([0.2961, 0.5166]) tensor([0.0728, 0.6470], device='cuda:0')

Пример

Если у вас несколько видеокарт, то для установки зерна на всех устройствах используется функция cuda.manual_seed_all, однако cuda.manual_seed влияет только на текущее активное устройство. Продемонстрируем это на примере с двумя GPU:

import torch torch.cuda.manual_seed(456) t_gpu_0 = torch.rand(3, device='cuda:0') # Если доступно второе устройство, зерно для него остаётся случайным if torch.cuda.device_count() > 1: t_gpu_1 = torch.rand(3, device='cuda:1') print(t_gpu_1) print(t_gpu_0)

Результат выполнения кода:

tensor([0.7956, 0.7455, 0.4202], device='cuda:0')

Чтобы гарантировать воспроизводимость на всех видеокартах, используйте функцию cuda.manual_seed_all.

Смотрите также

  • функцию manual_seed,
    которая устанавливает зерно для генератора на CPU
  • функцию cuda.manual_seed_all,
    которая устанавливает зерно для всех доступных устройств CUDA
  • функцию seed,
    которая инициализирует генератор случайным зерном на основе системного времени
  • функцию initial_seed,
    которая возвращает текущее значение зерна для генератора на CPU
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить