HugeCTR เป็นเฟรมเวิร์กผู้แนะนำที่เร่งด้วย GPU ซึ่งออกแบบมาเพื่อการฝึกอบรมและการอนุมานโมเดลการเรียนรู้เชิงลึกขนาดใหญ่
เป้าหมายการออกแบบ:
หมายเหตุ : หากคุณมีคำถามใด ๆ เกี่ยวกับการใช้ HugeCTR โปรดแจ้งปัญหาหรือเข้าร่วมช่องทาง Slack ของเราเพื่อสนทนาแบบโต้ตอบมากขึ้น
HugeCTR รองรับคุณสมบัติที่หลากหลาย รวมถึงสิ่งต่อไปนี้:
หากต้องการเรียนรู้เกี่ยวกับการปรับปรุงล่าสุด โปรดดูบันทึกประจำรุ่นของเรา
หากคุณต้องการฝึกโมเดลอย่างรวดเร็วโดยใช้อินเทอร์เฟซ Python ให้ทำดังต่อไปนี้:
เริ่มต้นคอนเทนเนอร์ NGC ด้วยไดเร็กทอรีโฮสต์ภายในเครื่องของคุณ (/your/host/dir mount) โดยการรันคำสั่งต่อไปนี้:
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
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 Contributor ของเรา
หน้าเว็บ |
---|
NVIDIA เมอร์ลิน |
NVIDIA HugeCTR |
Yingcan Wei, Matthias Langer, Fan Yu, Minseok Lee, Jie Liu, Ji Shi และ Zehuan Wang , "เซิร์ฟเวอร์พารามิเตอร์การอนุมานเฉพาะทาง GPU สำหรับโมเดลการแนะนำเชิงลึกขนาดใหญ่" การดำเนินการของการประชุม ACM ครั้งที่ 16 เกี่ยวกับระบบผู้แนะนำ หน้า 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 และ Kunlun Li , "Merlin HugeCTR: การฝึกอบรมและการอนุมานระบบผู้แนะนำที่เร่งด้วย GPU ," การดำเนินการของการประชุม ACM ครั้งที่ 16 เกี่ยวกับระบบผู้แนะนำ, หน้า 534-537, 2022.
การประชุม/เว็บไซต์ | ชื่อ | วันที่ | วิทยากร | ภาษา |
---|---|---|---|---|
ACM RecSys 2022 | เซิร์ฟเวอร์พารามิเตอร์การอนุมานเฉพาะทางของ GPU สำหรับโมเดลการแนะนำเชิงลึกขนาดใหญ่ | กันยายน 2022 | แมทเธียส แลงเกอร์ | ภาษาอังกฤษ |
วิดีโอสั้น ตอนที่ 1 | Merlin HugeCTR:GPU 加速的推荐系统框架 | พฤษภาคม 2022 | โจอี้ หวาง | 中文 |
วิดีโอสั้นตอนที่ 2 | HugeCTR 分级参数服务器如何加速推理 | พฤษภาคม 2022 | โจอี้ หวาง | 中文 |
วิดีโอสั้น ตอนที่ 3 | ดาวน์โหลด HugeCTR SOK 加速 TensorFlow 训练 | พฤษภาคม 2022 | เจมส์ กัว | 中文 |
จีทีซี สปริง 2022 | Merlin HugeCTR: เซิร์ฟเวอร์พารามิเตอร์การอนุมานแบบลำดับชั้นแบบกระจายโดยใช้แคชการฝัง GPU | มีนาคม 2565 | มัทเธียส แลงเกอร์, หยิงคาน เว่ย, หยู ฟาน | ภาษาอังกฤษ |
อัปสรา 2021 | GPU 推荐系统 เมอร์ลิน | ต.ค. 2021 | โจอี้ หวาง | 中文 |
GTC ฤดูใบไม้ผลิ 2021 | เรียนรู้ว่า Tencent ปรับใช้ระบบโฆษณาบน Merlin GPU Recommender Framework ได้อย่างไร | เมษายน 2021 | เซียงติงคง, โจอี้ หวาง | ภาษาอังกฤษ |
GTC ฤดูใบไม้ผลิ 2021 | Merlin HugeCTR: เจาะลึกเรื่องการเพิ่มประสิทธิภาพ | เมษายน 2021 | มินซอก ลี | ภาษาอังกฤษ |
GTC ฤดูใบไม้ผลิ 2021 | ผสานรวมการฝัง HugeCTR เข้ากับ TensorFlow | เมษายน 2021 | เจี้ยนปิงตง | ภาษาอังกฤษ |
จีทีซี ไชน่า 2020 | MERLIN HUGECTR :深入研究性能优化 | ต.ค. 2020 | มินซอก ลี | ภาษาอังกฤษ |
จีทีซี ไชน่า 2020 | 性能提升 7 ปี + 高性能 GPU 广告推荐加速系统的落地实现 | ต.ค. 2020 | เซียงติงคง | 中文 |
จีทีซี ไชน่า 2020 | สำหรับ GPU EMBEDDING CACHE 加速 CTR 推理过程 | ต.ค. 2020 | ฟาน หยู | 中文 |
จีทีซี ไชน่า 2020 | 将 HUGECTR Embedding 集成于 TENSORFLOW | ต.ค. 2020 | เจี้ยนปิงตง | 中文 |
GTC ฤดูใบไม้ผลิ 2020 | HugeCTR: การฝึกอบรมการประมาณอัตราการคลิกผ่านประสิทธิภาพสูง | มีนาคม 2020 | มินซอก ลี, โจอี้ หวาง | ภาษาอังกฤษ |
จีทีซี ไชน่า 2019 | HUGECTR: GPU 加速的推荐系统训练 | ต.ค. 2019 | โจอี้ หวาง | 中文 |
การประชุม/เว็บไซต์ | ชื่อ | วันที่ | ผู้เขียน | ภาษา |
---|---|---|---|---|
บล็อกวีแชท | Merlin HugeCTR 分级参数服务器系列之三:集成到TensorFlow | พ.ย. 2022 | คิงสลีย์ หลิว | 中文 |
NVIDIA Devblog | การอนุมานระบบการแนะนำการปรับขนาดด้วยเซิร์ฟเวอร์พารามิเตอร์ลำดับชั้นของ Merlin/使用 Merlin | สิงหาคม 2022 | ชาแชงค์ เวอร์มา, เหวินเหวิน เกา, หยิงคาน เหว่ย, แมทเธียส แลงเกอร์, เจอร์รี่ ชิ, ฟาน หยู, คิงสลีย์ หลิว, มินซอก ลี | อังกฤษ/中文 |
NVIDIA Devblog | Merlin HugeCTR Sparse Operation Kit 系列之二 | มิถุนายน 2565 | คุนหลุน ลี | 中文 |
NVIDIA Devblog | Merlin HugeCTR Sparse Operation Kit 系列之一 | มีนาคม 2565 | เจมส์ กัว, เจียนปิง ตง | 中文 |
บล็อกวีแชท | Merlin HugeCTR 分级参数服务器系列之二 | มีนาคม 2565 | หยิงคาน เหว่ย, แมทเธียส แลงเกอร์, เจอร์รี่ ชิ | 中文 |
บล็อกวีแชท | Merlin HugeCTR 分级参数服务器系列之一 | ม.ค. 2022 | หยิงคาน เหว่ย, เจอร์รี่ ชิ | 中文 |
NVIDIA Devblog | เร่งการฝังด้วยปลั๊กอินการฝัง HugeCTR TensorFlow | กันยายน 2021 | วินห์ เหงียน, แอน สเปนเซอร์, โจอี้ หวาง และเจียนปิง ตง | ภาษาอังกฤษ |
ปานกลาง.คอม | การเพิ่มประสิทธิภาพแพลตฟอร์มการเรียนรู้ของเครื่องของ Meituan: บทสัมภาษณ์กับ Jun Huang | กันยายน 2021 | เซิงหลัว และเบเนดิกต์ ชิฟเฟเรอร์ | ภาษาอังกฤษ |
ปานกลาง.คอม | การออกแบบและพัฒนาชั้นนำของระบบผู้แนะนำการโฆษณาที่ Tencent: บทสัมภาษณ์กับ Xiangting Kong | กันยายน 2021 | เซียงติงคง, แอน สเปนเซอร์ | ภาษาอังกฤษ |
NVIDIA Devblog | 扩ส่วนขยาย和加速大型深度学习推荐系统 – HugeCTR 系列第 1 部分 | มิถุนายน 2021 | มินซอก ลี | 中文 |
NVIDIA Devblog | ดาวน์โหลด Merlin HugeCTR ของ Python API 训练大型深度学习推荐模型 – HugeCTR 系列第 2 สำรอง | มิถุนายน 2021 | วินห์ เหงียน | 中文 |
ปานกลาง.คอม | ฝึกอบรมโมเดลผู้แนะนำการเรียนรู้เชิงลึกขนาดใหญ่ด้วย Python API ของ Merlin HugeCTR - ซีรีส์ HugeCTR ตอนที่ 2 | พฤษภาคม 2021 | มินซอก ลี, โจอี้ หวาง, วินห์ เหงียน และอาชิช ซาร์ดานา | ภาษาอังกฤษ |
ปานกลาง.คอม | การปรับขนาดและการเร่งระบบผู้แนะนำการเรียนรู้เชิงลึกขนาดใหญ่ — ซีรีส์ HugeCTR ตอนที่ 1 | พฤษภาคม 2021 | มินซอก ลี | ภาษาอังกฤษ |
กรมสรรพากร 2020 | Merlin: กรอบคำแนะนำเร่ง GPU | ส.ค. 2020 | แม้แต่ Oldridge เป็นต้น | ภาษาอังกฤษ |
NVIDIA Devblog | ขอแนะนำ NVIDIA Merlin HugeCTR: กรอบงานการฝึกอบรมสำหรับระบบผู้แนะนำโดยเฉพาะ | กรกฎาคม 2020 | มินซอก ลี และ โจอี้ หวัง | ภาษาอังกฤษ |