HugeCTR adalah kerangka rekomendasi berakselerasi GPU yang dirancang untuk pelatihan dan inferensi model pembelajaran mendalam yang besar.
Tujuan Desain:
CATATAN : Jika Anda memiliki pertanyaan dalam menggunakan HugeCTR, silakan ajukan masalah atau bergabunglah dengan saluran Slack kami untuk berdiskusi lebih interaktif.
HugeCTR mendukung berbagai fitur, antara lain sebagai berikut:
Untuk mempelajari tentang penyempurnaan terbaru kami, lihat catatan rilis kami.
Jika Anda ingin melatih model dengan cepat menggunakan antarmuka Python, lakukan hal berikut:
Mulai kontainer NGC dengan direktori host lokal Anda (/your/host/dir terpasang) dengan menjalankan perintah berikut:
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
CATATAN : Direktori /your/host/dir sama terlihatnya dengan direktori /your/container/dir . Direktori /your/host/dir juga merupakan direktori awal Anda.
CATATAN : HugeCTR menggunakan NCCL untuk berbagi data antar peringkat, dan NCCL mungkin memerlukan memori bersama untuk IPC dan sumber daya memori sistem yang disematkan (dikunci halaman). Disarankan agar Anda meningkatkan sumber daya ini dengan mengeluarkan opsi berikut di perintah docker run
.
-shm-size=1g -ulimit memlock=-1
Tulis skrip Python sederhana untuk menghasilkan kumpulan data sintetis:
# 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()
Hasilkan himpunan data Parket untuk model DCN Anda dengan menjalankan perintah berikut:
python dcn_parquet_generate.py
CATATAN : Dataset yang dihasilkan akan berada di folder ./dcn_parquet
, yang berisi data pelatihan dan evaluasi.
Tulis skrip Python sederhana untuk pelatihan:
# 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")
CATATAN : Pastikan jalur ke kumpulan data sintetis sudah benar sehubungan dengan skrip Python ini. data_reader_type
, check_type
, label_dim
, dense_dim
, dan data_reader_sparse_param_array
harus konsisten dengan kumpulan data yang dihasilkan.
Latih model dengan menjalankan perintah berikut:
python dcn_parquet_train.py
CATATAN : Diasumsikan bahwa nilai AUC evaluasi salah karena digunakan kumpulan data yang dihasilkan secara acak. Saat pelatihan selesai, file yang berisi grafik JSON yang dibuang, bobot model yang disimpan, dan status pengoptimal akan dihasilkan.
Untuk informasi lebih lanjut, lihat Panduan Pengguna HugeCTR.
Kami dapat mendukung pengembang eksternal yang tidak dapat menggunakan HugeCTR secara langsung dengan mengekspor komponen penting HugeCTR menggunakan:
Jika Anda mengalami masalah atau memiliki pertanyaan, kunjungi https://github.com/NVIDIA/HugeCTR/issues dan kirimkan masalah sehingga kami dapat memberi Anda resolusi dan jawaban yang diperlukan. Untuk lebih memajukan Peta Jalan HugeCTR, kami mendorong Anda untuk membagikan semua detail mengenai saluran sistem pemberi rekomendasi Anda menggunakan survei ini.
Dengan HugeCTR sebagai proyek sumber terbuka, kami menyambut baik kontribusi dari masyarakat umum. Dengan kontribusi Anda, kami dapat terus meningkatkan kualitas dan kinerja HugeCTR. Untuk mempelajari cara berkontribusi, lihat Panduan Kontributor HugeCTR kami.
Halaman web |
---|
NVIDIA Merlin |
NVIDIA HugeCTR |
Yingcan Wei, Matthias Langer, Fan Yu, Minseok Lee, Jie Liu, Ji Shi dan Zehuan Wang , "Server Parameter Inferensi khusus GPU untuk Model Rekomendasi Mendalam Berskala Besar," Prosiding Konferensi ACM ke-16 tentang Sistem Rekomendasi, hal. 408-419, 2022.
Zehuan Wang, Yingcan Wei, Minseok Lee, Matthias Langer, Fan Yu, Jie Liu, Shijie Liu, Daniel G. Abel, Xu Guo, Jianbing Dong, Ji Shi dan Kunlun Li , "Merlin HugeCTR: Pelatihan dan Inferensi Sistem Rekomendasi yang dipercepat GPU ," Prosiding Konferensi ACM ke-16 tentang Sistem Rekomendasi, hal. 534-537, 2022.
Konferensi / Situs Web | Judul | Tanggal | Pembicara | Bahasa |
---|---|---|---|---|
RecSys ACM 2022 | Server Parameter Inferensi khusus GPU untuk Model Rekomendasi Mendalam Berskala Besar | September 2022 | Matthias Langer | Bahasa inggris |
Video Pendek Episode 1 | Merlin HugeCTR:GPU 加速的推荐系统框架 | Mei 2022 | Joey Wang | tidak |
Video Pendek Episode 2 | HugeCTR 分级参数服务器如何加速推理 | Mei 2022 | Joey Wang | tidak |
Video Pendek Episode 3 | Menggunakan HugeCTR SOK dan TensorFlow 训练 | Mei 2022 | Permata Guo | tidak |
GTC Musim Semi 2022 | Merlin HugeCTR: Server Parameter Inferensi Hierarki Terdistribusi Menggunakan Cache Penyematan GPU | Maret 2022 | Matthias Langer, Yingcan Wei, Yu Fan | Bahasa inggris |
APSAR 2021 | GPU dari Merlin | Oktober 2021 | Joey Wang | tidak |
GTC Musim Semi 2021 | Pelajari bagaimana Tencent Menerapkan Sistem Periklanan pada Kerangka Rekomendasi GPU Merlin | April 2021 | Xiangting Kong, Joey Wang | Bahasa inggris |
GTC Musim Semi 2021 | Merlin HugeCTR: Menyelami Lebih Dalam Pengoptimalan Kinerja | April 2021 | Minseok Lee | Bahasa inggris |
GTC Musim Semi 2021 | Integrasikan Penyematan HugeCTR dengan TensorFlow | April 2021 | Jianbing Dong | Bahasa inggris |
GTC Tiongkok 2020 | MERLIN HUGECTR :深入研究性能优化 | Oktober 2020 | Minseok Lee | Bahasa inggris |
GTC Tiongkok 2020 | 性能提升 7 倍 + 的高性能 GPU 广告推荐加速系统的落地实现 | Oktober 2020 | Xiangting Kong | tidak |
GTC Tiongkok 2020 | Bagaimana cara menggunakan GPU EMBEDDING CACHE dan CTR? | Oktober 2020 | Fan Yu | tidak |
GTC Tiongkok 2020 | 将 PENYEDIAAN BESAR 集成于 TENSORFLOW | Oktober 2020 | Jianbing Dong | tidak |
GTC Musim Semi 2020 | HugeCTR: Pelatihan Estimasi Rasio Klik-Tayang Berkinerja Tinggi | Maret 2020 | Minseok Lee, Joey Wang | Bahasa inggris |
GTC Tiongkok 2019 | BESAR: GPU 加速的推荐系统训练 | Oktober 2019 | Joey Wang | tidak |
Konferensi / Situs Web | Judul | Tanggal | Penulis | Bahasa |
---|---|---|---|---|
Blog WeChat | Merlin HugeCTR dan TensorFlow | November 2022 | Kingsley Liu | tidak |
Blog Pengembang NVIDIA | Inferensi Sistem Rekomendasi Penskalaan dengan Server Parameter Hierarki Merlin/使用 Merlin 分层参数服务器扩展推荐系统推理 | Agustus 2022 | Shashank Verma, Wenwen Gao, Yingcan Wei, Matthias Langer, Jerry Shi, Fan Yu, Kingsley Liu, Minseok Lee | Bahasa Inggris/中文 |
Blog Pengembang NVIDIA | Merlin HugeCTR Sparse Operation Kit | Juni 2022 | Kunlun Li | tidak |
Blog Pengembang NVIDIA | Kit Operasi Jarang Merlin HugeCTR 系列之一 | Maret 2022 | Permata Guo, Jianbing Dong | tidak |
Blog WeChat | Merlin HugeCTR 分级参数服务器系列之二 | Maret 2022 | Yingcan Wei, Matthias Langer, Jerry Shi | tidak |
Blog WeChat | Merlin HugeCTR 分级参数服务器系列之一 | Januari 2022 | Yingcan Wei, Jerry Shi | tidak |
Blog Pengembang NVIDIA | Mempercepat Penyematan dengan Plugin Penyematan TensorFlow HugeCTR | September 2021 | Vinh Nguyen, Ann Spencer, Joey Wang dan Jianbing Dong | Bahasa inggris |
medium.com | Mengoptimalkan Platform Pembelajaran Mesin Meituan: Wawancara dengan Jun Huang | September 2021 | Sheng Luo dan Benedikt Schifferer | Bahasa inggris |
medium.com | Desain Terkemuka dan Pengembangan Sistem Rekomendasi Periklanan di Tencent: Wawancara dengan Xiangting Kong | September 2021 | Xiangting Kong, Ann Spencer | Bahasa inggris |
Blog Pengembang NVIDIA | 展和加速大型深度学习推荐系统 – HugeCTR 1 bulan | Juni 2021 | Minseok Lee | tidak |
Blog Pengembang NVIDIA | Gunakan Merlin HugeCTR dan Python API untuk 2 kali lipat – HugeCTR | Juni 2021 | Vinh Nguyen | tidak |
medium.com | Melatih Model Rekomendasi Pembelajaran Mendalam yang besar dengan API Python Merlin HugeCTR — Seri HugeCTR Bagian 2 | Mei 2021 | Minseok Lee, Joey Wang, Vinh Nguyen dan Ashish Sardana | Bahasa inggris |
medium.com | Menskalakan dan Mempercepat Sistem Rekomendasi Pembelajaran Mendalam yang besar — Seri HugeCTR Bagian 1 | Mei 2021 | Minseok Lee | Bahasa inggris |
IRS 2020 | Merlin: Kerangka Rekomendasi yang Dipercepat GPU | Agustus 2020 | Bahkan Oldridge dll. | Bahasa inggris |
Blog Pengembang NVIDIA | Memperkenalkan NVIDIA Merlin HugeCTR: Kerangka Pelatihan yang Didedikasikan untuk Sistem Rekomendasi | Juli 2020 | Minseok Lee dan Joey Wang | Bahasa inggris |