פיתוח מערכות AI בזמן אמת למכשירי קצה

כשכל אלפית שנייה קריטית—בתעשייה, במרוצי מכוניות או ברפואה—הסקה "מהירה" רגילה אינה מספיקה. אנחנו בונים מערכות AI בזמן אמת עבור התקני Edge, ומבטיחים ביצוע דטרמיניסטי של אלגוריתמים גם בתנאים הקשים ביותר. הצוות שלנו מספק פרויקטים סוהר, מניתוח זמן במקרה הגרוע ועד פריסה ותמיכה שוטפת, כך שתקבלו פתרון אמין המוכן לעומסי עבודה קריטיים.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

אנו מפתחים מערכות AI בזמן אמת עבור התקני AI קצה—מהקונספט ועד להטמעה מלאה. הפתרונות שלנו מייעלים את ההסקה בהתקני קצה עם זמן ביצוע דטרמיניסטי. הניסיון שלנו: 8+ שנים בזמן אמת קשיח, 30+ פרויקטים באוטומציה תעשייתית, מרוצי מכוניות ורפואה. לאחרונה, בפרויקט לרחפן אוטונומי עם זיהוי מכשולים על Jetson Orin, נתקלנו בקפיצות חביון של עד 200 אלפיות השנייה עקב תזמון תהליכונים לא אופטימלי, שגרם לקריסות תכופות. המעבר לתזמון דטרמיניסטי ואימות WCET הפחית את חביון p99 ל-15 אלפיות השנייה. AI קצה בזמן אמת הוא המפגש בין שתי דרישות קשות: ההסקה חייבת להסתיים בזמן קבוע לחלוטין, והיא חייבת להתבצע מקומית, בהתקן הקצה, ללא רשת. זרועות רובוטיות תעשייתיות, מערכות ADAS לרכב, מוניטורים רפואיים—בכל מקום עיכוב של 10 אלפיות השנייה משמעותו פגמים או תאונות. לפי ויקיפדיה, ניתוח WCET מספק ערבויות זמן קריטיות למערכות רגישות לבטיחות.

מה מבדיל זמן אמת מ"רק מהיר"

אופטימיזציה רגילה שואפת לזמן הסקה ממוצע. זמן אמת דורש זמן ביצוע גרוע ביותר מובטח (WCET). חביון p99 חשוב יותר מהממוצע: אם 99% מהבקשות מעובדות ב-5 אלפיות השנייה, אבל 1% לוקח 50 אלפיות השנייה, המערכת אינה מתאימה ליישומי זמן אמת קשיח.

סיווג לפי קשיחות:

מחלקה הפרת WCET דוגמאות
זמן אמת קשיח אסון (בטיחות) ABS, קוצב לב רפואי
זמן אמת יציב התוצאה חסרת תועלת עיבוד שמע, הזמנות פיננסיות
זמן אמת רך ירידת איכות זיהוי מחוות, שכבת AR

מדוע זמן אמת קשיח קריטי עבור AI קצה?

בניגוד ל-AI בענן, שבו חביון רשת מוסיף אי-דטרמיניזם, AI קצה דורש דטרמיניזם ברמת מיקרו-שניות. לדוגמה, שליטה בזרוע רובוטית: הפקודה חייבת להגיע תוך 1 אלפית השנייה לאחר עיבוד התמונה, אחרת המיקום נכשל. TensorRT עם דיוק FP8 מחצית את החביון על אותה ארכיטקטורה בהשוואה להסקת CUDA רגילה—השוואה ישירה להסקת CUDA טיפוסית. הגישה שלנו מפחיתה קפיצות פי 10 בהשוואה להסקת Linux טיפוסית ללא דטרמיניזם. התזמון הדטרמיניסטי שלנו אמין פי 5 מ-Linux סטנדרטי למשימות זמן אמת.

כיצד להבטיח זמן הסקה דטרמיניסטי?

בסיס חומרה

NVIDIA Jetson Orin NX/AGX עד 275 TOPS (INT8). CUDA Ampere + 1.5 MB מטמון L2. TensorRT עם דיוק FP8. דטרמיניזם חביון באמצעות זרמי CUDA בעדיפות ו-NVDLA לטופולוגיות קבועות (אפס קפיצות ב-NVDLA לעומת GPU).

Intel Core Ultra (Meteor Lake) + NPU NPU משולב ב-10 TOPS. OpenVINO עם תוסף NPU. יתרון: זיכרון משותף עם CPU, ללא תקורה של חביון PCIe. מתאים למשימות זמן אמת רך/יציב.

Microchip PolarFire SoC + RISC-V RTOS בזמן אמת קשיח על ליבות RISC-V, FPGA להסקה. דטרמיניזם FPGA + גמישות Linux בשבב אחד.

STM32H7 / RP2040 (TinyML זמן אמת קשיח) Cortex-M7 @ 480 MHz + FPU. TFLite Micro עם CMSIS-NN. פרופיל מדויק לפי מחזור באמצעות DWT. הסקה של רשתות עצביות פשוטות (זיהוי מילות מפתח CNN) בפחות מ-1 אלפית השנייה.

פרמטר Jetson Orin Intel Core Ultra PolarFire STM32H7
TOPS עד 275 INT8 עד 10 NPU פחות מ-1 FPGA פחות מ-0.1
קפיצות אופייניות פחות מ-50 µs פחות מ-100 µs פחות מ-10 µs פחות מ-5 µs
סוג זמן אמת קשיח רך/יציב קשיח קשיח
צריכת חשמל 15-60 W 15-28 W פחות מ-5 W פחות מ-1 W

מחסנית תוכנה

שכבת RTOS FreeRTOS עם configUSE_PREEMPTION=1 ו-configUSE_TIME_SLICING=0 לתזמון דטרמיניסטי. משימת הסקה בעדיפות הגבוהה ביותר. קטעים קריטיים (taskENTER_CRITICAL) לפעולות אטומיות עם ציוד היקפי.

Zephyr RTOS: מודרני יותר, CONFIG_PREEMPT_ENABLED, זיהוי מובנה של גלישת מחסנית, devicetree מקורי לציוד היקפי.

הסקה עם חביון דטרמיניסטי

TensorRT Execution Context:
- setOptimizationProfile() → фиксирует batch=1
- enqueueV3() → async CUDA stream
- cudaStreamSynchronize() → блокирующее ожидание
Без memory allocations в hot path.
Без Python runtime.

מניעת קפיצות

  • זיקת CPU: תהליך הסקה מקובע לליבה מבודדת (isolcpus=2 ב-bootargs)
  • זיכרון: mlock()/mlockall() — השבתת החלפת דפי מודל
  • הפרעות: כיבוי irqbalance, הגדרת זיקת IRQ ידנית
  • הקצאה מודעת NUMA במערכות מרובות-ליבות

דפוסים ארכיטקטוניים

חוצץ כפול לנתוני חיישן: מצלמה/חיישן כותבים לחוצץ A, הסקה קוראת מחוצץ B. כשהפריים מוכן, החלפת מצביע אטומית. ללא המתנה, ללא העתקה.

מקביליות צנרת:

[Capture] → [Preprocess] → [Inference] → [Postprocess] → [Actuate] stage0 stage1 stage2 stage3 stage4 

כל שלב הוא תהליך נפרד עם תור FIFO ביניהם. תפוקה = 1/max(חביון_שלב), לא סכום כל השלבים.

תזמון מודע למועד אחרון: EDF (הראשון עם המועד הקרוב ביותר) לזמן אמת רך. תחת Linux: SCHED_DEADLINE עם פרמטרים runtime/deadline/period. הקרנל מבטיח זמן CPU עד המועד האחרון.

הסקה מונעת הפרעות: ללא סקירה. הפרעת GPIO מהחיישן → ISR מגדיר דגל → תהליך RT מתעורר מיד. חביון מאירוע לתחילת הסקה: פחות מ-50 µs על Cortex-M7.

אימות תכונות זמן אמת

ניתוח WCET:

  • סטטי: AbsInt aiT, Bound-T — ניתוח קוד בינארי ללא ביצוע
  • דינמי: ריצות חוזרות עם קלט גרוע ביותר (עומס מקסימלי על כל הענפים)
  • מבוסס מדידה: מונה מחזורי DWT על Cortex-M, perf על Linux

פרופיל:

# CUDA event timing (ns-точность)
start = torch.cuda.Event(enable_timing=True)
end = torch.cuda.Event(enable_timing=True)
start.record()
model(input)
end.record()
torch.cuda.synchronize()
ms = start.elapsed_time(end)

בדיקת עמידות לקפיצות: cyclictest (Linux RT) — מודד חביון התעוררות תהליך תחת עומס. ערכי יעד: קפיצה מקסימלית פחות מ-100 µs לזמן אמת יציב, פחות מ-10 µs לזמן אמת קשיח (תיקון PREEMPT_RT).

אופטימיזציית מודל לדרישות RT

צנרת ML טיפוסית מייעלת דיוק. צנרת RT מייעלת דיוק תחת אילוץ WCET מחמיר.

גיזום מובנה לעומת לא מובנה: גיזום לא מובנה (אפס משקולות) אינו מאיץ בחומרה אמיתית—אפסים עדיין מעובדים. גיזום מובנה (הסרת ערוצים/ראשים) נותן האצה אמיתית ו-WCET צפוי.

פעולות בצורה קבועה: צורות דינמיות (אורך רצף משתנה ב-Transformer) הן מקור לאי-דטרמיניזם. ל-RT: ריפוד לאורך קבוע + מצב אצווה מפורש של TensorRT.

הימנעות מפעולות עם זמן לא צפוי:

  • מיון, topK — O(n log n) במקרה הגרוע
  • הקצאת זיכרון דינמית (new/malloc) — אסורה ב-ISR ובתהליכי RT
  • קלט/פלט קבצים — רק קבצים ממופים לזיכרון (mmap)

בטיחות פונקציונלית

לרכב (ISO 26262 ASIL-B/D) ותעשייה (IEC 61508 SIL-2/3): יתירות: הסקה דו-ערוצית עם מצביע (2-מתוך-2 או 2-מתוך-3). בלוקי חומרה עצמאיים.

שעון שמירה: טיימר שעון שמירה חומרתי. אם הסקה נתקעת—איפוס. זמן קצוב אופייני: 2× WCET.

זיהוי שגיאות: ECC DRAM חובה. בדיקת CRC של משקולות המודל בעת טעינה. סכומי בדיקה בזמן ריצה לחוצצים קריטיים.

איך אנחנו עושים זאת: תהליך שלב-אחר-שלב

  1. ניתוח דרישות חביון אמיתיות וקשיחות זמן אמת.
  2. בחירת פלטפורמת חומרה לפי TOPS, קפיצות, צריכת חשמל.
  3. אופטימיזציית מודל עם אילוץ WCET (גיזום, קוונטיזציה, צורות קבועות).
  4. אינטגרציה עם RTOS והגדרת דטרמיניזם (זיקת CPU, נעילת זיכרון).
  5. אימות WCET ובדיקת עמידות לקפיצות.

מה כלול בעבודה

  • מודל מותאם ומאומת (TensorRT/OpenVINO/TFLite)
  • הגדרת RTOS עם תזמון דטרמיניסטי
  • מערכת בדיקות עמידות ל-WCET וקפיצות
  • דוח עם פרופיל וניתוח מקרה גרוע ביותר
  • אינטגרציה למערכת שלך (דרייברים, קישורים)
  • תיעוד והדרכת צוות
  • 3 חודשי תמיכה לאחר השחרור

ציר זמן: 12–28 שבועות

זמן אמת קשיח עם הסמכה (ISO 26262/IEC 61508) — גבול עליון. זמן אמת רך לניטור תעשייתי — 12–16 שבועות. המורכבות נקבעת לא על ידי המודל אלא על ידי אימות תכונות התזמון. עלויות פרויקט טיפוסיות נעות בין $50,000 ל-$200,000, עם חיסכון של עד 30% בעלויות חומרה בהשוואה להסקה מבוססת ענן. צור קשר כדי להעריך את הפרויקט שלך—נבחר את הפתרון האופטימלי. הזמן ביקורת לפרויקט שלך—נעריך את דרישות הזמן האמת שלך ונציע ארכיטקטורה.