tl;dr: قمنا ببناء مهارة الوكيل التي تعلم وكلاء الترميز كيفية كتابة نواة CUDA للإنتاج. ثم وجهنا كلود وهيئة الدستور الغذائي إلى هدفين حقيقيين: أ الناشرون خط أنابيب و محولات نموذج. أنتج الوكلاء نواة عمل لكليهما، مع روابط ومعايير PyTorch الصحيحة، من البداية إلى النهاية.

كتابة حبات CUDA أمر صعب. كتابة نواة CUDA التي تتكامل معها بشكل صحيح transformers و diffusers أصعب. هناك أنماط الوصول إلى الذاكرة الخاصة بالهندسة المعمارية، واستراتيجيات التوجيه، وتخفيضات خلط الاعوجاج، وعشرات من مخاطر التكامل التي تتعثر حتى المطورين ذوي الخبرة. إنها بالضبط مشكلة متخصصة وعالية المخاطر حيث تتألق مهارات الوكيل.

لقد قدمنا ​​لوكلاء البرمجة المعرفة بالمجال الذي يحتاجون إليه، مثل بنية وحدة معالجة الرسومات التي يجب استهدافها، وكيفية هيكلة مشروع منشئ kernel، ومتى يتم استخدام الذاكرة المشتركة مقابل السجلات، وكيفية كتابة روابط PyTorch. وقام الوكلاء بالباقي. إذا كنت قد استخدمت مهارة تدريب LLM أو قرأت We Got Claude to Teach Open Models، فسيبدو النمط مألوفًا: قم بتجميع الخبرة في المجال في مهارة، ووجه الوكيل إلى المشكلة، واتركها تعمل.

لماذا مهارة للنوى؟

قام Kernel Hub بحل مشكلة توزيع نواة الأجهزة المخصصة. يمكنك تحميل النوى المترجمة مسبقًا من Hub باستخدام ملف واحد get_kernel يتصل. لا بنيات ولا أعلام. ومع ذلك، لا يزال هناك شخص ما بحاجة إلى ذلك اكتب النواة. هذه هي الفجوة التي تملأها هذه المهارة.

يحتوي تطوير نواة CUDA على مساحة سطحية وحشية:

  • أدلة التحسين الخاصة بالأجهزة لكل جيل من وحدات معالجة الرسومات. يتمتع كل من H100 وA100 وT4 بقدرات حوسبة مختلفة وأحجام ذاكرة مشتركة وملفات تعريف عرض النطاق الترددي
  • في المكتبات، diffusers و transformers لها تسلسلات هرمية مختلفة للوحدات، واتفاقيات التطبيع، وأنماط التكامل. يجب تسجيل النوى المخصصة في PyTorch torch.compile للتعرف.
  • للتوزيع، يمكن أن تعتمد النواة على إصدارات CUDA وPytorch وPython التي تنشئ مصفوفات بيئة ضخمة.

هذه هي معرفة المجال التي تضيع في علامات تبويب التوثيق وإجابات Stack Overflow. تقوم مهارة الوكيل بتجميعها في سياق يتم تحميله عند الطلب.

أولاً، دعنا نوضح كيفية استخدام المهارة على الفور، ثم سنتعمق في تفاصيل كيفية قياس النوى.

تثبيت المهارة

تأتي المهارة مع kernels مكتبة. قم بتثبيته في وكيل الترميز الخاص بك بأمر واحد:

# we need to install kernels from main for this
pip install git+https://github.com/huggingface/kernels.git#subdirectory=kernels
kernels skills add cuda-kernels --claude

هذا يسقط المهارة في .claude/skills/cuda-kernels/ حيث يلتقطه Claude Code وCursor تلقائيًا. للوكلاء الآخرين:

# Codex
kernels skills add cuda-kernels --codex

# OpenCode
kernels skills add cuda-kernels --opencode

# Custom destination
kernels skills add cuda-kernels --dest ./my-agent/skills/

# Install globally (available across all projects)
kernels skills add cuda-kernels --global

# Overwrite an existing installation
kernels skills add cuda-kernels --claude --force

بمجرد التثبيت، اطلب من وكيلك:

Build a vectorized RMSNorm kernel for H100 targeting the Qwen3-8B model in transformers.

أو يمكنك الذهاب إلى شيء أكثر انفتاحًا:

Build an optimized attention kernel for H100 targeting the Qwen3-8B model in transformers. Benchmark it against the PyTorch baseline and validate improvements in end-to-end performance.

يمكن للوكيل قراءة المهارة، وتحديد معلمات البنية الصحيحة، وإنشاء مصدر CUDA، وكتابة روابط PyTorch، والإعداد build.toml، وإنشاء برنامج نصي مرجعي.

إذا كنت تعمل على نواة أكثر تعقيدًا، أو تحسينات خاصة بالهندسة المعمارية، والتي لم يتم تغطيتها في المهارة، فإن المهارة توفر لبنات البناء الأساسية والأنماط لتبدأ. نحن أيضًا منفتحون على المساهمات المتعلقة بالمهارة نفسها.

ما في المهارة

المهارة تقريبًا 550 رمزا من الإرشادات المنظمة بالإضافة إلى البرامج النصية المرجعية، وأدلة تحسين وحدة معالجة الرسومات، ومستندات استكشاف الأخطاء وإصلاحها، وأمثلة العمل الكاملة. يمكن لأدوات البرمجة الوكيلة مثل Codex وClaude قراءة هذا وإنتاج مشروع نواة فعال.

ويغطي:

  • تحسين مدرك لبنية NVIDIA GPU لـ H100 وA100 وT4 (إمكانيات الحوسبة وعرض النطاق الترددي للذاكرة وأحجام الذاكرة المشتركة وحجم الكتلة)
  • أنماط التكامل لكليهما diffusers و transformers، بما في ذلك المزالق الخاصة بكل مكتبة
  • قوالب Kernel مع أنماط الوصول إلى الذاكرة الموجهة لـ BF16 وFP16 وFP32
  • قياس سير العمل لكل من المعايير الدقيقة للنواة المعزولة ومقارنات خطوط الأنابيب الشاملة
  • تكامل HuggingFace Kernel Hub عبر get_kernel لتحميل حبات المجتمع
.claude/skills/cuda-kernels/
├── SKILL.md                              # Main instructions (~550 tokens)
├── scripts/
│   ├── benchmark_example.py              # End-to-end benchmark template
│   ├── benchmark_rmsnorm.py              # Isolated kernel micro-benchmark
│   ├── ltx_kernel_injection_example.py   # Diffusers integration pattern
│   ├── transformers_injection_example.py # Transformers integration pattern
│   └── huggingface_kernels_example.py    # Kernel Hub integration
└── references/
    ├── diffusers-integration.md          # Diffusers guide with pitfalls
    ├── transformers-integration.md       # Transformers guide
    ├── huggingface-kernels-integration.md
    ├── h100-optimization-guide.md
    ├── a100-optimization-guide.md
    ├── t4-optimization-guide.md
    ├── kernel-templates.md
    └── troubleshooting.md

عندما يقوم الوكيل بتحميل هذا، فإنه يحصل على كل ما يحتاجه للانتقال من “اكتب لي نواة RMSNorm” إلى مشروع قابل للبناء وقياس الأداء. سوف يقوم grep بمهارة العثور على الملفات والأدلة ذات الصلة. لذلك من المهم تنظيم المهارة بطريقة يسهل العثور عليها.

يُطلب من الوكيل إنشاء نوى تتوافق مع القوالب الموجودة references/kernel-templates.md وإنتاج مشروع نواة كامل:

examples/your_model/
├── kernel_src/
│   └── rmsnorm.cu              # Vectorized CUDA kernel
├── torch-ext/
│   ├── your_kernels/__init__.py
│   └── torch_binding.cpp       # PyTorch C++ bindings
├── benchmark_rmsnorm.py        # Micro-benchmark script
├── build.toml                  # kernel-builder config
├── setup.py                    # pip install -e .
└── pyproject.toml

لقد اختبرنا هذا على هدفين حقيقيين.

قياس النوى: الناشرون (LTX-Video on H100)

قام الوكيل ببناء نواة RMSNorm وRoPE 3D وGEGLU وAdaLN لـ LTX-Video، وهو خط أنابيب لتوليد الفيديو من diffusers. المثال الكامل موجود في examples/ltx_video/. قمنا بتحسين نواة RMSNorm لـ H100. تم تشغيل كلا المعيارين على H100 80GB HBM3 بدقة BFloat16.

إذا كنت تريد التحقق من النواة التي تم إنشاؤها، فانتقل إلى هذا المثال

معيار RMSNorm المعزول

أولاً، قمنا بمقارنة أداء نواة RMSNorm المعزولة مع خط الأساس لـ PyTorch. هذا هو التسريع الرئيسي في خط الأنابيب الأمثل.

معزولة rmsnorm المعيار ltx-الفيديو

طاولة
شكل مخصص (مللي ثانية) بايتورتش (ملي ثانية) تسريع
[1x1024x2048] 0.039 0.064 1.64x
[2x1024x2048] 0.040 0.073 1.82x
[4x1024x2048] 0.052 0.093 1.78x
[1x4096x2048] 0.052 0.093 1.79x
[2x4096x3072] 0.102 0.209 2.04x
[1x8192x2048] 0.083 0.150 1.81x
[4x4096x3072] 0.173 0.393 2.26x

متوسط ​​السرعة: 1.88x وكفاءة عرض النطاق الترددي: 34.7% من H100 نظريًا (3350 جيجابايت/ثانية)

إنشاء فيديو شامل (49 إطارًا، 30 خطوة، H100 80 جيجابايت)

بعد ذلك، نقوم بمقارنة أداء إنشاء الفيديو الشامل للنوى المحسنة مع خط الأساس (بدون ترجمة) و torch.compile خط الأساس.

فيديو E2E القياسي LTX

طاولة
إعدادات الوقت (ق) إنه تسريع
خط الأساس (بدون تجميع) 2.87 12.58 1.00x
النواة المحسنة التي تم إنشاؤها 2.70 13.52 1.06x
خط الأساس + torch.compile 2.14 19.05 1.34x
الأمثل + torch.compile 2.01 18.45 1.43x

يمثل RMSNorm حوالي 5% من إجمالي الحوسبة في LTX-Video. يتم قضاء الوقت المتبقي في الاهتمام والإسقاطات الخطية وفك تشفير VAE. إن التسريع الشامل بنسبة 6% من نوع نواة واحد يتوافق مع ملف التعريف هذا.

قياس النوى: المحولات (Qwen3-8B على H100)

قام الوكيل ببناء نواة RMSNorm لـ Qwen3-8B، وهو نموذج لغة كبير من transformers مع 65 وحدة RMSNorm عبر 32 طبقة. المثال الكامل موجود في examples/qwen3_8b/. قمنا بتحسين نواة RMSNorm لـ H100. تم تشغيل كلا المعيارين على H100 80GB HBM3 بدقة BFloat16.

إذا كنت ترغب في استكشاف النواة، التحقق من ذلك هنا.

معيار RMSNorm المعزول

مرة أخرى، قمنا بمقارنة أداء نواة RMSNorm المعزولة مع خط الأساس لـ PyTorch.

معزولة rmsnorm المعيار qwen3-8b

متوسط ​​السرعة: 1.94x وكفاءة عرض النطاق الترددي: 22.3% من H100 نظريًا (3350 جيجابايت/ثانية)

طاولة
شكل مخصص (مللي ثانية) بايتورتش (ملي ثانية) تسريع
[1x128x4096] 0.040 0.062 1.58x
[1x512x4096] 0.038 0.064 1.69x
[1x1024x4096] 0.037 0.071 1.90x
[1x2048x4096] 0.045 0.091 2.03x
[1x4096x4096] 0.071 0.150 2.12x
[4x512x4096] 0.056 0.093 1.67x
[8x256x4096] 0.045 0.092 2.06x
[1x8192x4096] 0.109 0.269 2.47x

مقاييس التسريع بطول التسلسل: 1.58x عند 128 رمزًا، 2.47x عند 8192 رمزًا. بالنسبة للاستدلال على سياق طويل، تعمل النواة المخصصة على خفض زمن استجابة RMSNorm إلى النصف تقريبًا.

نشر النواة الخاصة بك إلى Hub

الوكيل يمنحك نواة عاملة. يتيح لك Kernel Hub مشاركته حتى يتمكن أي شخص من تحميله دون تجميع. هذا هو المسار الكامل من مخرجات الوكيل إلى النواة المنشورة.

1. التحقق من هيكل المشروع

يقوم الوكيل بإنتاج مشروع يتبع بالفعل تخطيط منشئ النواة:

your_kernel/
├── build.toml               # Build configuration
├── kernel_src/
│   └── rmsnorm.cu           # CUDA kernel source
└── torch-ext/
    ├── torch_binding.cpp    # Registers Torch ops
    └── your_kernels/
        └── __init__.py      # Python API wrapping _ops

ال build.toml يحكي kernel-builder ماذا نبني. يقوم الوكيل بإنشاء هذا لك، بما في ذلك الصحيح cuda-capabilities لوحدة معالجة الرسومات المستهدفة الخاصة بك:

[general]
name = "your_kernels"
backends = ["cuda"]

[torch]
src = ["torch-ext/torch_binding.cpp"]

[kernel.rmsnorm]
backend = "cuda"
src = ["kernel_src/rmsnorm.cu"]
depends = ["torch"]
cuda-capabilities = ["9.0"]  # H100

2. قم ببناء جميع المتغيرات باستخدام Nix

يجب أن تدعم نواة Kernel Hub جميع تكوينات PyTorch وCUDA الحديثة. تتعامل شريحة Nix منشئ النواة مع هذا تلقائيًا. انسخ المثال flake.nix في مشروعك وتشغيل:

nix flake update
nix run .#build-and-copy -L

يؤدي هذا إلى إنشاء النواة لكل متغير PyTorch/CUDA مطلوب ووضع النتائج فيه build/. للحصول على تصميمات أسرع، قم بتمكين ذاكرة التخزين المؤقت HuggingFace Nix:

nix run nixpkgs#cachix -- use huggingface

3. قم بإنشاء Hub repo وادفع

قم بإنشاء نموذج الريبو على Hub وقم بتحميل النواة المضمنة:

huggingface-cli repo create your-org/your-kernel --type model
huggingface-cli upload your-org/your-kernel ./build

4. يقوم الآخرون بتحميله في سطر واحد

بمجرد النشر، يمكن لأي شخص استخدام النواة الخاصة بك دون أي تجميع:

from kernels import get_kernel

rmsnorm = get_kernel("your-org/your-kernel")

get_kernel يكتشف إصدارات Python وPyTorch وCUDA الخاصة بالمستخدم ويقوم بتنزيل الملف الثنائي المطابق المترجم مسبقًا. لا توجد تصميمات ولا أعلام، وعادة ما تكون جاهزة في ثوانٍ.

المهارة والمركز متكاملان. المهارة تتعامل مع التطوير. يتولى المحور التوزيع. قم ببناء نواة بالمهارة، والتحقق من صحتها باستخدام البرامج النصية المعيارية، ونشرها على المركز، وتصبح سطرًا واحدًا للجميع.

خاتمة

لقد قمنا ببناء مهارة الوكيل التي تعلم وكلاء الترميز كيفية كتابة نواة CUDA للإنتاج. ثم وجهنا كلود وهيئة الدستور الغذائي إلى هدفين حقيقيين: أ الناشرون خط أنابيب و محولات نموذج. أنتج الوكلاء نواة عمل لكليهما، مع روابط ومعايير PyTorch الصحيحة، من البداية إلى النهاية. لقد قمنا بقياس النوى ووجدنا أن النوى المحسنة يمكن أن توفر تسريعًا في كل من الأداء المعزول والأداء الشامل.

موارد

شاركها.
اترك تعليقاً