פריסת מודלי ML על קצה עם AWS IoT Greengrass

עדכונים ידניים של מודלי ML על כל מכשיר מובילים לשגיאות ולהשבתות בייצור. אנחנו פורסים מודלים על ה-Edge עם AWS IoT Greengrass, ומבצעים אוטומציה של אספקה ועדכונים דרך פריסות מרכזיות. הצוות שלנו מספק את הפרויקט במפתח מלא—מההקמה ועד לתמיכה שוטפת—ומבטיח פעולה אמינה גם ברשתות לא יציבות.

תחומי פיתוח AI

שאלות נפוצות

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

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

פריסת מודלי ML על קצה עם AWS IoT Greengrass

תרחיש טיפוסי: מפעל עם 200 בקרי PLC ומצלמות, אך המודל אומן ב-SageMaker. עדכון ידני של קבצי בינארי בכל מכשיר מוביל לשגיאות וזמן השבתה. אנו מגדירים את AWS IoT Greengrass v2 — רכיב זמן ריצה להרצת רכיבי ML על הקצה ללא SSH. מודלים מ-SageMaker נפרסים לקבוצת הדברים "factory-line-1", עם ניהול צי מרכזי באמצעות אספקה ללא מגע (zero-touch provisioning). במשך 5 שנים, פרסנו את Greengrass על 30+ אתרים תעשייתיים ומבטיחים יציבות תחת הפרעות רשת.

ארכיטקטורת Greengrass v2

Nucleus — רכיב הליבה של Greengrass ב-Java. מנהל מחזור חיים של רכיבים, IPC, וברוקר MQTT מקומי (Moquette). רכיבים הם יחידות פריסה אטומיות: מנוהלים על ידי AWS (מוכנים מראש) ומותאמים אישית (הקוד שלך). פריסה היא מסמך JSON עם קבוצת רכיבים וגרסאות. קונסולת AWS או CLI שולחים אותה למכשיר, ו-Nucleus מיישם אותה.

ענן (AWS): SageMaker → ארטיפקט מודל ב-S3 IoT Greengrass Deployment → יעדים: קבוצת דברים "factory-line-1"

מכשיר קצה: Greengrass Nucleus ├── aws.greengrass.SageMakerEdgeManager ├── aws.greengrass.DlrInferenceService (DLR runtime) └── com.company.InferenceApp (רכיב מותאם אישית)

למה Greengrass ל-ML על קצה?

ניהול מרכזי —只需 לעדכן את הפריסה וכל 500 המכשירים מקבלים את המודל החדש. פריסה מדורגת עם canary (קודם 5%, אחר כך 100%) וגלגול אוטומטי לאחור במקרה של שגיאה. Device Shadow מאחסן את גרסת המודל הנוכחית והסטטוס, ומסנכרן ענן ↔ קצה גם במהלך ניתוקי רשת זמניים.

רכיבי Inference של ML

SageMaker Edge Manager מהדר מודלים באמצעות SageMaker Neo עבור חומרה ספציפית (ARM, x86, GPU). בינאריים אופטימליים בתוספת Edge Agent (daemon gRPC) רצים על המכשיר.

# edge agent gRPC client
import agent_pb2, agent_pb2_grpc

channel = grpc.insecure_channel('unix:///tmp/sagemaker_edge_agent_example.sock')
stub = agent_pb2_grpc.AgentStub(channel)

# загрузка модели
stub.LoadModel(agent_pb2.LoadModelRequest(
    url=f's3://bucket/model.tar.gz',
    name='defect-detector'
))

# инференс
response = stub.Predict(agent_pb2.PredictRequest(
    name='defect-detector',
    tensors=[tensor]
))

DLR (Deep Learning Runtime) — חלופה ל-Edge Manager. מודלים מהודרים עם TVM, תומך ב-TFLite, XGBoost, LightGBM. קל יותר, ללא תקורה של gRPC. על CPU, DLR לרוב מהיר פי 2.

import dlr model = dlr.DLRModel('/greengrass/v2/work/model', 'cpu') result = model.run({'input': numpy_array}) 

השוואה בין SageMaker Edge Manager ו-DLR

פרמטר SageMaker Edge Manager DLR
הידור Neo עבור חומרה ספציפית TVM
פרוטוקול gRPC קריאות ישירות C++/Python
תמיכה במודלים TensorFlow, PyTorch, MXNet TFLite, XGBoost, LightGBM
זמן השהיה (CPU) ~15 ms ~7 ms
גודל זמן ריצה ~50 MB ~15 MB

איך לארגן עדכוני מודל ללא זמן השבתה?

נקודת כאב קלאסית של ML על קצה — איך לעדכן את המודל על 500 מכשירים. Greengrass פותר זאת באופן טבעי.

לפי תיעוד AWS, Greengrass v2 תומך בפריסה מדורגת עם גלגול אוטומטי לאחור. זרימת עבודה:

  1. SageMaker מאמן גרסת מודל חדשה.
  2. הארטיפקט מועלה ל-S3.
  3. גרסת הרכיב ב-Greengrass מתעדכנת.
  4. פריסה חדשה נוצרת על קבוצת הדברים.
  5. Nucleus על כל מכשיר מוריד את הדלתא, מיישם אותה, ומתגלגל לאחור במקרה של שגיאה.

פריסה מדורגת: פריסה עם canary — קודם 5% מהמכשירים (תת-קבוצה של קבוצת הדברים), ניטור מדדי CloudWatch, ואז 100%.

Shadow מקומי למצב: AWS IoT Device Shadow מאחסן את גרסת המודל הנוכחית, סטטוס ה-inference, ומדדים מותאמים אישית. סנכרון ענן ↔ קצה עובד גם במהלך ניתוקי רשת זמניים.

טעויות פריסה נפוצות - אי-תאימות גרסת רכיב — בדוק את דרישת הגרסה ב-recipe. - חוסר הרשאות גישה ל-S3 — הגדר תפקיד IAM עבור Greengrass. - ארטיפקט מודל גדול מדי — השתמש ב-DLR או בקוונטיזציה.

רכיב Inference מותאם אישית

recipe.json:

{
  "RecipeFormatVersion": "2020-01-25",
  "ComponentName": "com.company.QualityInspection",
  "ComponentVersion": "1.0.0",
  "ComponentDependencies": {
    "aws.greengrass.DlrInferenceService": {
      "VersionRequirement": ">=1.6.0"
    }
  },
  "Manifests": [
    {
      "Platform": {
        "os": "linux"
      },
      "Lifecycle": {
        "Install": "pip3 install -r requirements.txt",
        "Run": "python3 {artifacts:path}/inference.py"
      },
      "Artifacts": [
        {
          "URI": "s3://my-bucket/inference.py"
        },
        {
          "URI": "s3://my-bucket/model.tar.gz",
          "Unarchive": "ZIP"
        }
      ]
    }
  ]
}

Stream Manager לנתונים גדולים

greengrass.StreamManager — חיץ מקומי להעברת קצה → ענן. כאשר הרשת לא יציבה, הנתונים נאגרים מקומית (עד 256 MB) ונשלחים אוטומטית ל-Kinesis/S3/IoT Analytics כשהקישוריות חוזרת. הפרמטרים ניתנים להגדרה: גודל חיץ, תדירות ייצוא, מדיניות גלישה.

ניהול צי

קבוצות דברים + מאפיינים: factory-line-1, factory-line-2 — מודלים שונים לקווים שונים. מאפיין: firmware_version, camera_model — לפריסה מותנית.

Greengrass CLI לאבחון:

greengrass-cli component list # запущенные компоненты
greengrass-cli logs get --component com.company.QualityInspection
greengrass-cli deployment create ... # локальный деплой для отладки

מדדי CloudWatch: סטנדרטיים ComponentRunning, ComponentBroken. מותאמים אישית באמצעות EMF (Embedded Metrics Format) — כל מדד מקוד הקצה ישירות ל-CloudWatch.

תוכנית יישום ולוחות זמנים

שלב משך
ביקורת ועיצוב שבוע 1
הקמת Nucleus ורכיבים 1–2 שבועות
אינטגרציה ופריסה מדורגת 1–2 שבועות
ניטור ותיעוד שבוע 1

מה כלול

  • ביקורת של התשתית והמודל הנוכחיים (תאימות ל-Greengrass, דרישות חומרה).
  • עיצוב ארכיטקטורה: בחירה בין SageMaker Edge Manager ו-DLR, הרכב רכיבים, תוכנית פריסה.
  • הקמת Greengrass Nucleus ורכיבים (מנוהלים על ידי AWS + מותאמים אישית).
  • אינטגרציה עם מערכות קיימות (SCADA, MES, Kafka).
  • פריסה מדורגת וניטור (CloudWatch, התראות).
  • תיעוד תפעולי והדרכת צוות.
  • אחריות יציבות ל-30 יום לאחר ההשקה.

פלטפורמות נתמכות

Linux (arm64, armv7, x86_64). מינימום: 512 MB RAM, מעבד 1 GHz. נבדק: Raspberry Pi 4, NVIDIA Jetson, BeagleBone, מחשבים תעשייתיים x86. Windows (x86_64): Greengrass v2.9+, סט רכיבים מוגבל.

לוחות זמנים ועלות

פריסת Greengrass ראשונה עם מודל מוכן — משבוע 1. רכיבים מותאמים אישית, ניהול צי, פריסה מדורגת, אינטגרציה עם SCADA/MES קיימים — 4–6 שבועות. העלות מחושבת באופן אישי לאחר ביקורת. הערך את הפרויקט שלך — צור קשר. משתמשים ב-Greengrass ורוצים להפחית עלויות תפעול? בקשו ייעוץ — נבחר את הארכיטקטורה האופטימלית.