HugeCTR — это рекомендательная среда с ускорением на графическом процессоре, предназначенная для обучения и вывода больших моделей глубокого обучения.
Цели дизайна:
ПРИМЕЧАНИЕ . Если у вас есть какие-либо вопросы по использованию HugeCTR, сообщите о проблеме или присоединяйтесь к нашему каналу Slack для более интерактивного обсуждения.
HugeCTR поддерживает множество функций, в том числе следующие:
Чтобы узнать о наших последних улучшениях, обратитесь к нашим примечаниям к выпуску.
Если вы хотите быстро обучить модель с помощью интерфейса Python, сделайте следующее:
Запустите контейнер NGC с локальным каталогом хоста (смонтирован /your/host/dir), выполнив следующую команду:
docker run --gpus=all --rm -it --cap-add SYS_NICE -v /your/host/dir:/your/container/dir -w /your/container/dir -it -u $(id -u):$(id -g) nvcr.io/nvidia/merlin/merlin-hugectr:24.06
ПРИМЕЧАНИЕ . Каталог /your/host/dir так же виден, как и каталог /your/container/dir . Каталог /your/host/dir также является вашим стартовым каталогом.
ПРИМЕЧАНИЕ . HugeCTR использует NCCL для обмена данными между рангами, а NCCL может потребоваться общая память для IPC и закрепленные (с блокировкой страниц) ресурсы системной памяти. Рекомендуется увеличить эти ресурсы, введя следующие параметры в команде docker run
.
-shm-size=1g -ulimit memlock=-1
Напишите простой скрипт Python для создания синтетического набора данных:
# dcn_parquet_generate.py
import hugectr
from hugectr.tools import DataGeneratorParams, DataGenerator
data_generator_params = DataGeneratorParams(
format = hugectr.DataReaderType_t.Parquet,
label_dim = 1,
dense_dim = 13,
num_slot = 26,
i64_input_key = False,
source = "./dcn_parquet/file_list.txt",
eval_source = "./dcn_parquet/file_list_test.txt",
slot_size_array = [39884, 39043, 17289, 7420, 20263, 3, 7120, 1543, 39884, 39043, 17289, 7420,
20263, 3, 7120, 1543, 63, 63, 39884, 39043, 17289, 7420, 20263, 3, 7120,
1543 ],
dist_type = hugectr.Distribution_t.PowerLaw,
power_law_type = hugectr.PowerLaw_t.Short)
data_generator = DataGenerator(data_generator_params)
data_generator.generate()
Создайте набор данных Parquet для вашей модели DCN, выполнив следующую команду:
python dcn_parquet_generate.py
ПРИМЕЧАНИЕ . Сгенерированный набор данных будет находиться в папке ./dcn_parquet
, которая содержит данные обучения и оценки.
Напишите простой скрипт Python для обучения:
# dcn_parquet_train.py
import hugectr
from mpi4py import MPI
solver = hugectr.CreateSolver(max_eval_batches = 1280,
batchsize_eval = 1024,
batchsize = 1024,
lr = 0.001,
vvgpu = [[0]],
repeat_dataset = True)
reader = hugectr.DataReaderParams(data_reader_type = hugectr.DataReaderType_t.Parquet,
source = ["./dcn_parquet/file_list.txt"],
eval_source = "./dcn_parquet/file_list_test.txt",
slot_size_array = [39884, 39043, 17289, 7420, 20263, 3, 7120, 1543, 39884, 39043, 17289, 7420,
20263, 3, 7120, 1543, 63, 63, 39884, 39043, 17289, 7420, 20263, 3, 7120, 1543 ])
optimizer = hugectr.CreateOptimizer(optimizer_type = hugectr.Optimizer_t.Adam,
update_type = hugectr.Update_t.Global)
model = hugectr.Model(solver, reader, optimizer)
model.add(hugectr.Input(label_dim = 1, label_name = "label",
dense_dim = 13, dense_name = "dense",
data_reader_sparse_param_array =
[hugectr.DataReaderSparseParam("data1", 1, True, 26)]))
model.add(hugectr.SparseEmbedding(embedding_type = hugectr.Embedding_t.DistributedSlotSparseEmbeddingHash,
workspace_size_per_gpu_in_mb = 75,
embedding_vec_size = 16,
combiner = "sum",
sparse_embedding_name = "sparse_embedding1",
bottom_name = "data1",
optimizer = optimizer))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.Reshape,
bottom_names = ["sparse_embedding1"],
top_names = ["reshape1"],
leading_dim=416))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.Concat,
bottom_names = ["reshape1", "dense"], top_names = ["concat1"]))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.MultiCross,
bottom_names = ["concat1"],
top_names = ["multicross1"],
num_layers=6))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.InnerProduct,
bottom_names = ["concat1"],
top_names = ["fc1"],
num_output=1024))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.ReLU,
bottom_names = ["fc1"],
top_names = ["relu1"]))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.Dropout,
bottom_names = ["relu1"],
top_names = ["dropout1"],
dropout_rate=0.5))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.Concat,
bottom_names = ["dropout1", "multicross1"],
top_names = ["concat2"]))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.InnerProduct,
bottom_names = ["concat2"],
top_names = ["fc2"],
num_output=1))
model.add(hugectr.DenseLayer(layer_type = hugectr.Layer_t.BinaryCrossEntropyLoss,
bottom_names = ["fc2", "label"],
top_names = ["loss"]))
model.compile()
model.summary()
model.graph_to_json(graph_config_file = "dcn.json")
model.fit(max_iter = 5120, display = 200, eval_interval = 1000, snapshot = 5000, snapshot_prefix = "dcn")
ПРИМЕЧАНИЕ . Убедитесь, что пути к синтетическим наборам данных верны в отношении этого сценария Python. data_reader_type
, check_type
, label_dim
, dense_dim
и data_reader_sparse_param_array
должны соответствовать сгенерированному набору данных.
Обучите модель, выполнив следующую команду:
python dcn_parquet_train.py
ПРИМЕЧАНИЕ . Предполагается, что оценочное значение AUC неверно, поскольку используются случайно сгенерированные наборы данных. По завершении обучения будут сгенерированы файлы, содержащие JSON дампа графа, сохраненные веса модели и состояния оптимизатора.
Для получения дополнительной информации обратитесь к Руководству пользователя HugeCTR.
Мы можем поддерживать внешних разработчиков, которые не могут использовать HugeCTR напрямую, экспортируя важные компоненты HugeCTR, используя:
Если у вас возникнут какие-либо проблемы или возникнут вопросы, перейдите по адресу https://github.com/NVIDIA/HugeCTR/issues и сообщите о проблеме, чтобы мы могли предоставить вам необходимые решения и ответы. Для дальнейшего продвижения дорожной карты HugeCTR мы рекомендуем вам поделиться всеми подробностями о конвейере вашей рекомендательной системы с помощью этого опроса.
Поскольку HugeCTR является проектом с открытым исходным кодом, мы приветствуем вклад широкой общественности. Благодаря вашему вкладу мы сможем продолжать улучшать качество и производительность HugeCTR. Чтобы узнать, как внести свой вклад, обратитесь к нашему Руководству для участников HugeCTR.
Веб-страницы |
---|
NVIDIA Мерлин |
NVIDIA Огромный CTR |
Инкан Вэй, Маттиас Лангер, Фань Ю, Минсок Ли, Цзе Лю, Цзи Ши и Зехуан Ван , «Сервер параметров вывода, специализирующийся на графических процессорах, для крупномасштабных моделей глубоких рекомендаций», Материалы 16-й конференции ACM по рекомендательным системам, стр. 408-419, 2022.
Зехуань Ван, Инкан Вэй, Минсок Ли, Матиас Лангер, Фан Ю, Цзе Лю, Шицзе Лю, Дэниел Г. Абель, Сюй Го, Цзяньбин Донг, Цзи Ши и Куньлунь Ли , «Merlin HugeCTR: обучение и вывод рекомендательной системы с ускорением на графическом процессоре », Материалы 16-й конференции ACM по рекомендательным системам, стр. 534-537, 2022.
Конференция / Веб-сайт | Заголовок | Дата | Спикер | Язык |
---|---|---|---|---|
АСМ РекСис 2022 | Специализированный сервер параметров вывода для графических процессоров для крупномасштабных моделей глубоких рекомендаций | сентябрь 2022 г. | Маттиас Лангер | Английский |
Короткие видео Эпизод 1 | Merlin HugeCTR: Графический процессор и процессор | май 2022 г. | Джои Ван | 中文 |
Короткие видео Эпизод 2 | Огромный CTR | май 2022 г. | Джои Ван | 中文 |
Короткие видео Эпизод 3 | Использование HugeCTR SOK и TensorFlow 训练 | май 2022 г. | Джемс Го | 中文 |
GTC весна 2022 | Merlin HugeCTR: сервер параметров распределенного иерархического вывода с использованием встроенного кэша графического процессора | март 2022 г. | Маттиас Лангер, Инкан Вэй, Ю Фань | Английский |
АПСАРА 2021 | Графический процессор 推荐系统 Merlin | октябрь 2021 г. | Джои Ван | 中文 |
ГТК весна 2021 г. | Узнайте, как Tencent развернула рекламную систему на основе рекомендательной системы Merlin GPU | апрель 2021 г. | Сянтин Конг, Джои Ван | Английский |
ГТК весна 2021 г. | Merlin HugeCTR: глубокое погружение в оптимизацию производительности | апрель 2021 г. | Минсок Ли | Английский |
ГТК весна 2021 г. | Интегрируйте встраивание HugeCTR с TensorFlow | апрель 2021 г. | Цзяньбин Донг | Английский |
ГТК Китай 2020 | МЕРЛИН ХЬЮГЕКТР: 深入研究性能优化 | октябрь 2020 г. | Минсок Ли | Английский |
ГТК Китай 2020 | Графический процессор 7 дюймов + графический процессор с графическим процессором | октябрь 2020 г. | Сянтин Конг | 中文 |
ГТК Китай 2020 | Встраивание кэша в графический процессор и CTR. | октябрь 2020 г. | Фань Ю | 中文 |
ГТК Китай 2020 | HUGECTR EMBEDDING в TENSORFLOW | октябрь 2020 г. | Цзяньбин Донг | 中文 |
ГТК весна 2020 | HugeCTR: обучение высокоэффективной оценке кликабельности | март 2020 г. | Минсок Ли, Джои Ван | Английский |
ГТК Китай 2019 | HUGECTR: поддержка графического процессора | октябрь 2019 г. | Джои Ван | 中文 |
Конференция / Веб-сайт | Заголовок | Дата | Авторы | Язык |
---|---|---|---|---|
Вичат Блог | Merlin HugeCTR — 集成到TensorFlow. | ноябрь 2022 г. | Кингсли Лю | 中文 |
Блог разработчиков NVIDIA | Вывод системы рекомендаций по масштабированию с помощью сервера иерархических параметров Merlin/使用 Merlin 分层参数服务器扩展推荐系统推理 | август 2022 г. | Шашанк Верма, Венвен Гао, Инкан Вэй, Матиас Лангер, Джерри Ши, Фань Ю, Кингсли Лю, Минсок Ли | Английский/中文 |
Блог разработчиков NVIDIA | Комплект Merlin HugeCTR Sparse Operation Kit 系列之二 | июнь 2022 г. | Куньлунь Ли | 中文 |
Блог разработчиков NVIDIA | Комплект Merlin HugeCTR Sparse Operation Kit 系列之一 | март 2022 г. | Джемс Го, Цзяньбин Донг | 中文 |
Вичат Блог | Merlin HugeCTR — лучший вариант | март 2022 г. | Инкан Вэй, Маттиас Лангер, Джерри Ши | 中文 |
Вичат Блог | Merlin HugeCTR — 分级参数服务器系列之一 | Январь 2022 г. | Инкан Вэй, Джерри Ши | 中文 |
Блог разработчиков NVIDIA | Ускорение внедрения с помощью плагина для внедрения HugeCTR TensorFlow | Сентябрь 2021 г. | Винь Нгуен, Энн Спенсер, Джои Ван и Цзяньбин Донг | Английский |
Medium.com | Оптимизация платформы машинного обучения Meituan: интервью с Цзюнь Хуаном | Сентябрь 2021 г. | Шэн Луо и Бенедикт Шифферер | Английский |
Medium.com | Ведущий специалист по проектированию и разработке системы рекомендаций по рекламе в Tencent: интервью с Сянтин Конгом | Сентябрь 2021 г. | Сянтин Конг, Энн Спенсер | Английский |
Блог разработчиков NVIDIA | 扩展和加速大型深度学习推荐系统 – HugeCTR 系列第 1 部分 | июнь 2021 г. | Минсок Ли | 中文 |
Блог разработчиков NVIDIA | 使用 Merlin HugeCTR 的 Python API 训练大型深度学习推荐模型 – HugeCTR 系列第 2 部分 | июнь 2021 г. | Винь Нгуен | 中文 |
Medium.com | Обучение большим моделям рекомендателей глубокого обучения с помощью API-интерфейсов Merlin HugeCTR Python — серия HugeCTR, часть 2 | май 2021 г. | Минсок Ли, Джои Ван, Винь Нгуен и Ашиш Сардана | Английский |
Medium.com | Масштабирование и ускорение крупных рекомендательных систем глубокого обучения — серия HugeCTR, часть 1 | май 2021 г. | Минсок Ли | Английский |
Налоговое управление США 2020 | Merlin: платформа рекомендаций с ускорением на графическом процессоре | август 2020 г. | Даже Олдридж и т. д. | Английский |
Блог разработчиков NVIDIA | Представляем NVIDIA Merlin HugeCTR: платформу обучения, предназначенную для рекомендательных систем | июль 2020 г. | Минсок Ли и Джои Ван | Английский |