список строк устройств для рабочих узлов, участвующих в all-reduce.
num_gpus_per_worker
количество устройств GPU на рабочем узле.
all_reduce_spec
кортеж, именованный кортеж или список кортежей, определяющих алгоритм all-reduce.
Первый элемент кортежа — имя алгоритма all-reduce. Допустимые имена алгоритмов: "nccl", "nccl/xring", "nccl/rechd", "nccl/pscpu", "xring", "pscpu", "psgpu", "pscpu/pscpu". Алгоритмы с "/" являются иерархическими, поэтому выполняются два all-reduce: первый агрегирует тензоры внутри рабочего узла, а второй — между рабочими узлами.
Второй элемент кортежа — количество фрагментов при выполнении all-reduce. Предположим, что его значение равно M. Каждый тензор после упаковки будет разделен на M фрагментов, а затем будет выполнено M параллельных all-reduce, прежде чем они будут окончательно склеены обратно в полный тензор.
Третий элемент — максимальный размер тензоров, к которым будет применён алгоритм, указанный в первом элементе. Например, если all_reduce_spec=[("nccl", 2, 1024), ("pscpu/pscpu", 2, -1)], тензоры размером не более 1024 байт будут использовать 2-фрагментный all-reduce "nccl", а другие тензоры — 2-фрагментный алгоритм "pscpu/pscpu". Третьи элементы должны быть упорядочены по возрастанию в кортежах и заканчиваться -1, что указывает на бесконечность.