HugeCTR هو إطار عمل للتوصية يتم تسريعه باستخدام وحدة معالجة الرسومات (GPU) مصمم للتدريب والاستدلال على نماذج التعلم العميق الكبيرة.
أهداف التصميم:
ملاحظة : إذا كانت لديك أي أسئلة حول استخدام 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
، الذي يحتوي على بيانات التدريب والتقييم.
كتابة نص بايثون بسيط للتدريب:
# 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.
صفحات الويب |
---|
نفيديا ميرلين |
نفيديا نسبة النقر إلى الظهور ضخمة |
Yingcan Wei، Matthias Langer، Fan Yu، Minseok Lee، Jie Liu، Ji Shi وZehuan Wang ، "خادم معلمات الاستدلال المتخصص بوحدة معالجة الرسومات لنماذج التوصية العميقة واسعة النطاق،" وقائع مؤتمر ACM السادس عشر حول أنظمة التوصية، ص. 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 and Kunlun Li ، "Merlin HugeCTR: التدريب والاستدلال على نظام التوصية المتسارع بواسطة GPU "، وقائع مؤتمر ACM السادس عشر لأنظمة التوصية، ص. 534-537، 2022.
المؤتمر/الموقع الإلكتروني | عنوان | تاريخ | المتحدث | لغة |
---|---|---|---|---|
ايه سي ام ريكسيس 2022 | خادم معلمات استدلالية متخصص في وحدة معالجة الرسومات لنماذج التوصيات العميقة واسعة النطاق | سبتمبر 2022 | ماتياس لانجر | إنجليزي |
فيديوهات قصيرة الحلقة 1 | ميرلين ضخمة نسبة النقر إلى الظهور: وحدة معالجة الرسومات | مايو 2022 | جوي وانغ | 中文 |
فيديوهات قصيرة الحلقة 2 | نسبة النقر إلى الظهور الضخمة التي تحقق نجاحًا كبيرًا | مايو 2022 | جوي وانغ | 中文 |
فيديوهات قصيرة الحلقة 3 | تم تطوير HugeCTR SOK بواسطة TensorFlow | مايو 2022 | الأحجار الكريمة قوه | 中文 |
جي تي سي سبينج 2022 | Merlin HugeCTR: خادم معلمات الاستدلال الهرمي الموزع باستخدام ذاكرة التخزين المؤقت لتضمين GPU | مارس 2022 | ماتياس لانجر، ينججان وي، يو فان | إنجليزي |
ابسارا 2021 | GPU 推荐系统 ميرلين | أكتوبر 2021 | جوي وانغ | 中文 |
جي تي سي ربيع 2021 | تعرف على كيفية قيام Tencent بنشر نظام إعلاني على Merlin GPU Recommender Framework | أبريل 2021 | شيانغتينغ كونغ، جوي وانغ | إنجليزي |
جي تي سي ربيع 2021 | Merlin HugeCTR: الغوص العميق في تحسين الأداء | أبريل 2021 | مينسوك لي | إنجليزي |
جي تي سي ربيع 2021 | دمج تضمين HugeCTR مع TensorFlow | أبريل 2021 | جيان بينغ دونغ | إنجليزي |
جي تي سي الصين 2020 | ميرلين HUGECTR: أفضل ما في الأمر | أكتوبر 2020 | مينسوك لي | إنجليزي |
جي تي سي الصين 2020 | معالج 7 倍 + معالج رسومات GPU | أكتوبر 2020 | شيانغتينغ كونغ | 中文 |
جي تي سي الصين 2020 | قم بتضمين ذاكرة التخزين المؤقت لوحدة معالجة الرسومات ونسبة النقر إلى الظهور | أكتوبر 2020 | فان يو | 中文 |
جي تي سي الصين 2020 | التضمين الضخم يعتمد على TensorFLOW | أكتوبر 2020 | جيان بينغ دونغ | 中文 |
جي تي سي ربيع 2020 | نسبة النقر إلى الظهور الضخمة: تدريب عالي الأداء على تقدير نسبة النقر إلى الظهور | مارس 2020 | مينسوك لي، جوي وانغ | إنجليزي |
جي تي سي الصين 2019 | ضخمة: وحدة معالجة الرسومات (GPU) | أكتوبر 2019 | جوي وانغ | 中文 |
المؤتمر/الموقع الإلكتروني | عنوان | تاريخ | المؤلفون | لغة |
---|---|---|---|---|
مدونة وي شات | تم إنشاء Merlin HugeCTR بواسطة شركة TensorFlow | نوفمبر 2022 | كينغسلي ليو | 中文 |
مدونة نفيديا للتطوير | قياس استدلال نظام التوصية باستخدام خادم المعلمات الهرمية Merlin/使用 Merlin | أغسطس 2022 | شاشانك فيرما، وينوين جاو، ينجكان وي، ماتياس لانجر، جيري شي، فان يو، كينغسلي ليو، مينسوك لي | الإنجليزية / 中文 |
مدونة نفيديا للتطوير | مجموعة العمليات المتفرقة Merlin HugeCTR | يونيو 2022 | كونلون لي | 中文 |
مدونة نفيديا للتطوير | مجموعة العمليات المتفرقة من Merlin HugeCTR | مارس 2022 | الأحجار الكريمة قوه، جيان بينغ دونغ | 中文 |
مدونة وي شات | Merlin HugeCTR هو أحد أفضل الشركات في العالم | مارس 2022 | ينجكان وي، ماتياس لانجر، جيري شي | 中文 |
مدونة وي شات | Merlin HugeCTR هو أحد أفضل الشركات في العالم | يناير 2022 | ينجكان وي، جيري شي | 中文 |
مدونة نفيديا للتطوير | تسريع التضمين باستخدام البرنامج الإضافي للتضمين HugeCTR TensorFlow | سبتمبر 2021 | فينه نجوين، آن سبنسر، جوي وانغ وجيانبينج دونغ | إنجليزي |
Medium.com | تحسين منصة التعلم الآلي لشركة Meituan: مقابلة مع Jun Huang | سبتمبر 2021 | شنغ لوه وبينيديكت شيفر | إنجليزي |
Medium.com | قيادة التصميم والتطوير لنظام التوصية الإعلانية في Tencent: مقابلة مع Xiangting Kong | سبتمبر 2021 | شيانغتينغ كونغ، آن سبنسر | إنجليزي |
مدونة نفيديا للتطوير | نسبة النقر إلى الظهور الهائلة 1 صفر | يونيو 2021 | مينسوك لي | 中文 |
مدونة نفيديا للتطوير | استخدام Merlin HugeCTR في Python API لتعلم كيفية إنشاء حساب – HugeCTR 2 部分 | يونيو 2021 | فينه نجوين | 中文 |
Medium.com | تدريب نماذج كبيرة لمقترحات التعلم العميق باستخدام واجهات برمجة تطبيقات Python الخاصة بـ Merlin HugeCTR - سلسلة HugeCTR الجزء 2 | مايو 2021 | مينسوك لي وجوي وانغ وفينه نجوين وأشيش ساردانا | إنجليزي |
Medium.com | توسيع نطاق أنظمة التوصية الكبيرة للتعلم العميق وتسريعها - سلسلة HugeCTR الجزء الأول | مايو 2021 | مينسوك لي | إنجليزي |
مصلحة الضرائب 2020 | ميرلين: إطار توصية معجل لوحدة معالجة الرسومات | أغسطس 2020 | حتى أولدريدج وما إلى ذلك. | إنجليزي |
مدونة نفيديا للتطوير | تقديم NVIDIA Merlin HugeCTR: إطار تدريب مخصص لأنظمة التوصية | يوليو 2020 | مينسوك لي وجوي وانغ | إنجليزي |