Latest / M365.FM – פודקאסט Microsoft 365, Copilot ובינה מלאכותית בעברית / הסקה איטית ב-GPU: נפילה ל-CPU, התנגשויות גרסאות CUDA/TensorRT ותקלות קונטיינרים (דיבוב AI)
Transcript
- 0:00זה התחיל בהזהרה, ואז שקט.
- 0:02חשבון ה-GPU עלה כאילו המעיץ לא ישן מעולם.
- 0:05ובכל זאת התפוקות זחלו כאילו האורות קבו.
- 0:07לוחות המכוונים היו ירוקים, הלקוחות לא.
- 0:10החריגה לא התאים על התמונה.
- 0:11ניצול GPU קרוב לאפס בזמן שהשהיה זינקה.
- 0:15לא הופעלו התראות, לא היו קווים אדומים, רק זמן שהתעדה.
- 0:18הראיות מצביעות על פתולוגיה אחת שמתחזה למצב תקין.
- 0:22הנה ההבטחה.
- 0:23נעקוב אחר הממצאים, נזהה את האשם, ונתקן את הפתולוגיה.
- 0:27נבחן שלושה מצבי קשר, גיבוי למעבד, CPU,
- 0:30חוסר התאמת גרסאות בין קודה לאונט סטנסר RT,
- 0:33ותצורת קונטיינר שגויה, ונוכיח זאת באמצעות השיה,
- 0:36תפוקה וניצול GPU לפני ואחרי.
- 0:38הגדרת המקרה, הסביבה ופרופיל הקורבן.
- 0:41כל קונפיגורציה מספרת סיפור, והסיפור הזה מתחיל בדייר רגיל תחת לחץ.
- 0:46אומס העבודה הוא דיפוזיה מטקסט לתמונה,
- 0:47גרסאות סטייבל דיפוז'ון שרצות בית מינוס 512 על 512 ומתרחבות למד מינוס 1024 על 1024.
- 0:54התעבורה התנודתית.
- 0:55הקונקורנסי נע בין 8 למד מינוס 32 בקשות.
- 0:58גדלי העצבות משתנים בין 1 למד מינוס 8.
- 1:00רמות השירות מחמירות לגבי השיית זנב.
- 1:02חריגות בפי 95 מתורגמות ישירות לזיקויים וכנסות.
- 1:05המודלים אינם אקזוטיים, אבל הבחירות שלהם קריטיות.
- 1:08צינורות עיבוד של סטייבל דיפוז'ון מיוצאים לאונקס,
- 1:11אופטימיזציות של תשומת לב צולבת כמו X4 Mars או Scale.Product Attention,
- 1:15ובחירות מתזמן שסוחרות בצעדים עבור איכות.
- 1:17המערכת האקולוגית אמורה להעיץ כאשר התשתית תקינה.
- 1:20החומרה נראית מכובדת על הנייר.
- 1:22כרטיסי אנווידיה מסדרת RTX ואה בענן עם 16 עד 32 גיגה בייט וירם.
- 1:27ה-PCIE יושב בין המערך להתקן כמו עמדת תשלום.
- 1:30מהיר מספיק כשהוא מוגדר, מעניש כשפעולות כלת פלט חוזרות להעברות הניתנות לדפדוף.
- 1:34בסביבה הזו, שום דבר אינו מקרי.
- 1:36שרשרת הכלים מוערמת בשכבות מוכרות.
- 1:38PyTorch משמש לייצוא, ואז אונאקס רנדהים או TensorRT משתלטים לצורך עסקה.
- 1:42מנהלי הטקן קודה יושבים מתחת להקל.
- 1:45גרעיני תשומת לב מבטיחים מהירות עם הגרסאות תואמות.
- 1:48הפריסה היא בקונטיינרים בלבד, תמונות בלתי ניתנות לשינוי,
- 1:51פריסות בניהול C ומדיניות כחול ירו.
- 1:53המגבלה הזו אמורה ליצור בטיחות.
- 1:55היא יכולה גם להקפיא פגמים בתוך אינבר.
- 1:57הסיכונים העסקיים אינם מופשטים.
- 1:59עלות לכל בקשה מגדירה את הרווח.
- 2:01הזמנות GPU מתומחרות לפי שעה, בין אם הגרעינים רצים ובין אם לא.
- 2:05כשההשייה נמתחת משניות לחצי דקה, התפוקה קורסת.
- 2:08קונפיגורציה שגויה אחת הופכת מעיץ לתנור חימום, יקר, שקט,
- 2:12ועסוק בלא לעשות כלום שתורם לתור.
- 2:14בבחינה מדוקדקת יותר, פרופיל הקורבן מצטמצם.
- 2:17קונקורנסי בית מינוס 16, עצבות ב-2 כדי להישאר מתחת לתקרות הוורם בית מינוס 512 עם עלייה למד מינוס 1024 לאיכות.
- 2:24הדייר מצפה לפי 95 עקבי.
- 2:27במקום זאת, העקבות מראים השהיות לא יציבות, דלתאות רחבות בין פי 50 לפי 95 ומחזורי עבודה של הג'י פי יו שמתנודדים מממינוס 5% עד 40% ללא סיבה ברורה.
- 2:36גרפי ה-CPU מספרים אמת אחרת.
- 2:39הליבות עמוסות ללא הצדקה בעיבוד מקדים.
- 2:41הראיות מצביעות על שלושה כיוונים.
- 2:43ראשית, חלופה ל-CPU. כאשר ספק הביצוע של CUDA או TensorRT נכשל בטעינה, המנוע בוחר בשקט בגרף ה-CPU.
- 2:50המודל עובד, אך עם שיהוי הגבוה פי 10 עד 30.
- 2:53שנית, היא התאמת גרסאות.
- 2:54אונקס רנטיים קומפל מול גרסת CUDA אחת, צמתים מריצים אחרת, ומנועי TensorRT מבוטלים ונבנים מחדש עם ליבות גנריות.
- 3:02ניצול המשאבים קיים, אך הנתיבים המהירים עבדו.
- 3:05שלישית, הגדרות קונטיינר, שגויות, תמונות נפוחות, חוסר בחיבור התקני GPU, הגדרות שגויות של אנווידיה טורקית, וזיכרון שתפוס בהקצאות שמגביר שיהוי זנב תחת אומס.
- 3:15בסופו של דבר, זו לא תעלומה שקשורה למודלים.
- 3:18זהו מקרה שנוגע לאמינות התשתית.
- 3:20אנו נדחקה אחר הממצאים, סדר הספקים, יומני היכולות, חיבורי ההתקנים, ונשווה אותם לשלושה מדדים קריטיים, שיהוי, תפוקה וניצול GPU.
- 3:31תיק ראיות א', חלופה ל-CPU, החבלן השקט.
- 3:35זה התחיל בבקשה שהייתה אמורה לקחת שניות ולא לקחה.
- 3:38מד ה-GPU היה שקט, שקט מדי.
- 3:41גרף ה-CPU בינתיים עלה כמו הזעקת אש.
- 3:43בבדיקה מעמיקה יותר, המנוע ביצע בחירה.
- 3:46הוא הריץ משימה המיועדת ל-GPU על ה-CPU.
- 3:48אף התראה לא הופעלה.
- 3:49הפלט חזר בסופו של דבר.
- 3:51זהו החבלן השקט, החלופה ל-CPU.
- 3:54מדוע זה משנה? זה פשוט.
- 3:55סטייבל דיפיוז'ון על CPU הוא בזבוז זמן.
- 3:58המודל עובד, אך השיהוי מתרבה, פי 10 עד 30 איטי יותר, והתפוקה קורסת.
- 4:03בסביבה שמוכרת מילי שניות, הפער הזה קטלני.
- 4:05החשבון ממשיך לחייב על זמן GPU, אך ההתקן לא מבצע את העבודה.
- 4:09ציר הזמן חשף את התבנית.
- 4:11קונטיינרים שהורצו מקומית עם קודה טאסו.
- 4:13כשעברו לצומת אשכול עם מחסנית דרייברים שונה מעט, אותם קונטיינרים עלו, הגיבו לבדיקות תקינות, ואז הידרדרו.
- 4:19נקודת הקצה של התקינות רק בדקה, האם השרת למעלה.
- 4:22אז, היא מעולם לא בדקה, האם ה-GPU באמת מבצע את העבודה.
- 4:25בסביבה הזו, שום דבר אינו מקרי.
- 4:28שתיקה היא ממצא.
- 4:29הממצא העיקרי הוא סדר ספקי הביצוע באונקס רנטיים.
- 4:32המנוע מקבל רשימה, נסה טנסור RT, לאחר מכן קודה, ואז CPU.
- 4:37אם קודה נכשל בהתחול, בגלל דרייבר שגוי, ספריות חסרות או התקן לא מחובר, אורט יחבר בשקט את ספק הביצוע של ה-CPU.
- 4:44ללא חריגה, ללא קריסה, רק שורה ביומנים, שלעיתים קרובות נסתרת מהעין.
- 4:48ספק הביצוע של קודה אינו זמין, חוזר ל-CPU.
- 4:51השורה הזו היא הוידוי שרוב הצוותים לעולם לא קוראים.
- 4:54הנה החלק המוזר.
- 4:55תרשימי הניצול נראים תקינים מתאה במבט ראשון.
- 4:58בקשות עדיין מסתיימות.
- 4:59מפת השירות נראית ירוקה, אבל מחזור העבודה של ה-CPU נשאר על 5% בעוד זמן המאבד של המשתמש מזנק ונשאר גבוה.
- 5:06השיית ה-P50 גדלה P4 וביצועי ה-P95 מתפרקים.
- 5:09תעבורה מתפרצת מחמירה את המצב.
- 5:11תורים נוצרים והסקלר האוטומטי מוסיף עוד רפליקות שיורשות את אותו הפגם.
- 5:15תחשבו על זה כמו נבחרת שליחים שבה העצן לא הופיע, אז הספרן רץ את המקצה.
- 5:19המקל עובר, אבל לא במהירות של מרוץ.
- 5:21במילים אחרות, המערכת שלכם מספקת תוצאה נכונה על חשבון כל תקציב הסלו.
- 5:25סימנים מצטברים במהירות כשעוקבים אחר רצף ההתחול.
- 5:28יומני טעינת הספק מראים ניסיונות התחול של CUDA עם בדיקות גרסת דרייבר.
- 5:33אם הקונטיינר נבנה עבור CUDA 12.2, אבל בצומת יש רק 12, ההתחול נכשל.
- 5:39אם ערכת הכלים של אנווידיה לקונטיינרים לא מוגדרת, חיבור ההתקן לעולם לא יופיע בתוך הקונטיינר.
- 5:44בלי דב, אנווידיה אין לייב קודה.
- 5:46לכן, אם הגדרת הפוד לא מבקשת GPU במפורש, המתזמן לעולם לא יקצה את ההתקן.
- 5:52כל אחד מאלה מפעיל את השינמוך השקט הזה.
- 5:55השחזור הוא פשוט וישיר.
- 5:58בצומת שהוגדר לא נכון, הסקה פשוטה תציג ספק ביצוע מעבד, בעוד שציפית לספק טנסור RT או ספק CUDA.
- 6:07שלחו הודעה אחת, הגי-פי-יו נשאר במצב סרק.
- 6:10תהליכי המעבד מזנקים, והתמונה חוזרת תוך 20 עד 40 שניות במקום 2 עד 6.
- 6:15חזרו על כך בצומת עם דרייברים וחיבורים תקינים, וההודעה מסתיימת בשבריר מהזמן ומחזור הגי-פי-יו קופץ לטווח עבודה יציב.
- 6:22הראיות מצביעות על כך שמנגנוני ההגנה הנוכחיים הם תיאטרליים בלבד.
- 6:26בדיקות בריאות מחזירות 200 כי השרת מגיב.
- 6:28אין עימות התחול לכך שנתיב הג'י-פי-יו פעיל.
- 6:31בדיקות ביצועים לא קיימות, לכן התזמור מאמין שהרפליקות תקינות.
- 6:34המערכת לא מסוגלת להבדיל בין העצה לבין אמולציה.
- 6:38אמצעי הנגד הוא בוטה מעצם תכנונו.
- 6:40כישלון חרוץ עם ספק ביצוע הג'י-פי-יו חסר או פגום.
- 6:44סרבו להתחיל עם מאבד בסביבת ייצור.
- 6:46בהפעלת התהליך מנו את הספקים, ודו שטנסור RT או קודה נתנו, ושמספר ההתקנים תואם לציפיות.
- 6:54תעדו את היכולות QDNN, ליבות תנזור זמינות, מגבלות זיכרון, ווצאו עם קוד שגיאה עם משהו חסר.
- 7:01הקריבו זמינות עבור תקינות, ואפשרו לי מתזמירים להריץ מחדש על צומת תקין.
- 7:05כדי שזה יעבוד, אכפו עימות של חיבורי כלת, פלט.
- 7:08חברו קלטים ופלטים לזיכרון ההתקן ועמתו השקת ריאלית בעת ההתחול.
- 7:13הרצאה אחת לחימום שמפעילה את ליבת ה-Food Attention.
- 7:15אם התזמון חוצה את סף ההשאיה, הניחו שהנתיב פגום והפילו את הפוד.
- 7:20הוסיפו סט הודעות בדיקה, קנרי, עם זרעים דטרמיניסטיים.
- 7:23השבו את ההשאיה מול חלון הבסיס.
- 7:25אם הסטייה חורגת מהסובלנות שלכם, שילחו התראה לצוות ויצרו את הפריסה.
- 7:29זה אולי נראה קשוח, אבל האלטרנטיבה גרועה יותר.
- 7:32אשקול שעובד תוך עיבוד זמן ותקציב.
- 7:35קבע את סדר הספקים, דחה חלופת מעבד, וגרם למערכת להוכיח שהיא מהירה לפני שהיא נחשבת לפעילה.
- 7:41רק אז ירוק פירושו מועץ.
- 7:43ראייה ב' היא התאמת גרסאות.
- 7:46חוסר תאימות בין קודה לאונקס לטנסור.
- 7:49אם הג'י פי יו לא היה בשימוש, השאלה הבאה היא אם הוא יכול היה לפעול במלוא המהירות גם כשהוא נוכח.
- 7:54הראיות מצביעות על קשל עדין יותר.
- 7:56הגרסאות מסתנקרנות מספיק כדי לרוץ, אך לא מספיק כדי לפתוח את הנתיב המהיר.
- 8:00המערכת נראית מועצת עד שמסתכלים על השעונים.
- 8:03למה זה משנה? זה פשוט.
- 8:04צינורות דיפוזיה חיים עומתים על ביצועי האטנציה.
- 8:07כשאונקס רנטאים וטנסורט לא יכולים לטעון גרעינים, קרנלס,
- 8:11מאוחדים כי גרסאות קודה, CU-DNN או טנסור-RT לא תואמות, הם עוברים בשקט למימושים גנריים.
- 8:17המודל עובד.
- 8:19ניצול המשאבים נע סביב 30-50% והשיהוי חורג מהתקציב.
- 8:24הגרסה נראית אותו דבר, העבודה איטית יותר.
- 8:26בבדיקה מדוקדקת יותר, הממצאים מדויקים.
- 8:29יומני טעינת הספקים מצהירים על הצלחה עם סימן מסוים.
- 8:32נסיגה לגרעיני ברירת מחדל או השבטת X4 Mars.
- 8:36תראה שפיינוח הטנסורט נכשל עם בנייה מחדש של מנוע לא תואם,
- 8:40מה שמפעיל קומפילציה מקומי.
- 8:42מנועים שנבנו על גרסת משנה אחת של טנסור-RT לא יפענחו על אחרת.
- 8:46הבנייה מחדש מסתיימת, אך התוכנית המתקבלת עשויה להשמית אופטימיזיות של FP16 או ATTENSION מאוחד.
- 8:51המרוץ מסתיים.
- 8:52ללא זינוקים, מחזורי העבודה של ליבות הטנסור נשארים מושתקים.
- 8:56הנה החלק המנוגד לאינטואיציה.
- 8:58צוותים מפרשים את זה כריצה אופטימלית.
- 9:00בסביבה הזו, שום דבר אינו מקרי.
- 9:02אם Scaled Product Attention לא פעיל, אם X-Formers קבוי,
- 9:06אם CU-DNN מדווח על מרחב עבודה מוגבל, הביצועים קורסים בנימוס.
- 9:10הגרסה הפשוטה היא שקבצים בינאריים לא תואמים קופים גרעינים שמשתמשים ביותר תנועת זיכרון ופחות ספיפות חישובית.
- 9:16הפסי הופך לנראה לעין במעקבים.
- 9:18זמני השיהוי הקצה גדלים ככל שהמקביליות עולה.
- 9:20חשוב על המחסנית כעל סט מנעולים.
- 9:22דרייבר, ערכת כלים CUDA, CU-DNN, דגלי בנייה של ONUX Runtime וטנסור.
- 9:28שן אחת לא במקום, והמפתח מסתובב רק חצי דרך.
- 9:31אורט מפרסם גרף יכולות לכל ספק הרצה.
- 9:34אם האורט המקומפל מצפה לקדה 12.2, אך דרייבר הצומת חושף 12.1.
- 9:39CUDA נטען עם תכונות מוגבלות או לא נטען כלל.
- 9:42אם טנסור RT הוא 8.6 בצומת, אך התוכניות נוצרו עם 8.4, הפיינוח נכשל והמערכת מייצרת מחדש עם טקטיקות שמרניות.
- 9:50המערכת מעדיפה תקינות על פני מהירות בשקט.
- 9:53מדדים מוכיחים את ההפסד במונחים מעשיים.
- 9:55אם X-Formers או SDP פעילים, האטנציה של הדיפוזיה מפחית את זמן השעון באופן מדיד.
- 10:00מחקרים מראים בעקביות העצות של P2 עד P5 בנתיב האטנציה, תלוי ברזולוציה ובגודל העצבה.
- 10:05השוות אותם דרך אי-התאמת גרסאות ותאבד את המכפילים האלו.
- 10:09מזוג הסימונים, טום, מצטבר עם הרווחים האלו.
- 10:12ללא הגרעינים המאוחדים, התועלת נחנקת על ידי רוחב פס של זיכרון ופריסות לא אופטימליות.
- 10:17הפער מחמיר תחת 1024 על 1024 ורמת מקביליות גבוהה יותר.
- 10:21כדי לעקוב אחר הממצאים, התחל במיפוי היכולות.
- 10:24בעת ההפעלה, הדפס את רשימת הספקים המדויקת ואת התכונות המדווחות שלהם.
- 10:28גרסת טנסור RT, זמינות FP16 ו-INT8, סביבת עבודה מקסימלית, היוריסטיקת קונבולוציה של CUDNN ונוכחות NCCL לריבוי מאבדים גרפיים.
- 10:38עבור אונאקס רנטיים, הצג את סדרי העדיפויות של ה-EP.
- 10:41טנסור RT, קודה ואז CPU.
- 10:44אמת מה באמת נקשר לצמתי הגרף שלך?
- 10:46תעד אם צמתי עטנשון מוקצים לטנסורט עם ליבות מאוחדות או לליבות קודה כלליות.
- 10:52לאחר מכן, חקור את הסביבה.
- 10:53תשאל את מנהל ההתקן, דרייבר.
- 10:55אנווידי ה-SMI מציג את מודול הקרנל ואת התאימות לקדה.
- 10:58קרא את גרסאות הספריות קונטיינר.
- 11:00ליב קודה, ליב קבלס, ליב קן, ליב וינפר.
- 11:03אם ה-IMEG מכיל ספריות קודה 12.3, אך מנהל ההתקן המערך תומך רק עד 12.2, מצב תאימות זמן הריצה עשוי להתאנ עם מגבלות.
- 11:11אם ה-IMEG מצפה לכותרות טנסור RT 8.6, אך תוסף הצומת מספק 8.4, קריאות API ידרדרו או יבטלו אופטימיזציות מסוימות.
- 11:18התיקון הוא מטריצת בנייה, לא משאלה.
- 11:21קבע גרסאות מדויקות במקור אמת יחיד.
- 11:23IMEG, בסיס עם תאימות מנהל התקן, גרסת קודה משנית, CUDNN, גיבוב בניית ORT וגרסת טנסור RT.
- 11:30עפה אימג'ים להסקה, אינפרנס, מול המטריצה הזו ודחה צמתים שלא תואמים דרך תוויות צמתים ובדיקות קבלה.
- 11:36בני מראש הוא שמור במטמון מנועי טנסור RT לכל גרסת מודל ורזולוציה בגרסת טנסור RT המדויקת שאתה פורס.
- 11:41התייחס לגבצי תוכנית כאל ממצאים הקשורים למטריצה.
- 11:44לעולם אל תסתמך על בניית מנוע על הצומת בסביבת ייצור.
- 11:47זה מסתיר סחיפת גרסאות ומנפח זמני הזנקה, Cold Starts.
- 11:50כדי להבטיח שזה יעבוד, הוסף בדיקות אשן ב-C שמעמתות יכולות ליבה.
- 11:54הרץ את הקונטיינר בסביבה מבודדת עם מנהל ההתקן היד ואמת שטנסורט טוען ליבות FP16,
- 12:00צמתי אטנשון מאוחדים, קישור IO פעיל, Vex for Mars או SDP מוכרים.
- 12:05הרץ סט פרומפטים דטרמיניסטי ותכשל את הבנייה אם ההחזור חורג מחלון הבסיס או אם הלוגים מכילים שפת חזרה למצב בטוח.
- 12:12שמור את תמונת המצב של היכולות לצד הדיג'סט של האימג כדי ששחזור גרסה יחזיר גם את הקוד וגם את מאפייני הביצועים.
- 12:19בסופו של דבר, העובדות מראות שסחיפת גרסאות היא לא בג, אתה מבין.
- 12:22זה מחיר המהירות שאתה משלם.
- 12:24המערכת תעבוד.
- 12:25השעונים יעידו על כך.
- 12:27קובץ ראיות C, קונטיינר.
- 12:29שחיקת יעילות עקב הגדרות שגויות בתכנון.
- 12:33גם כשהגרסאות תואמות, הקונטיינר יכול לחבל ביעילות מבפנים.
- 12:37הראיות מצביעות על דימום איתי, אימג, נפוח, אינסטלציה חסרה של GPU והתנהגות מקצה זיכרון שמעובטת את ההחזור תחת אומס.
- 12:44שום דבר לא קורס.
- 12:45הכל מתדרדר.
- 12:47מדוע זה חשוב זה פשוט?
- 12:49קונטיינרים מעצבים את המציאות בזמן הריצה.
- 12:51עם האימג, שמן והזנקה איטית, רפליקות מגיעות מאוחר לאירוע.
- 12:55אם התקני GPU אינם מחוברים או של זמן הריצה חסרים הדגלים הנכונים, ספקי הביצוע מתנהגים לא קשורה.
- 13:02עם זירות זיכרון עוגרות הקצאות, רעש ברם מפעיל דפדוף וזינוקים בזנב התעבורה.
- 13:06המודל נראה בסדר.
- 13:08הקונטיינר ממשה בשקט כל בקשה.
- 13:10בבחינה מקרוב, ארטיפקטים מצטברים בזמן ה-ביילד.
- 13:13אימגים עולים על 2 ג'יגבייט, עמוסים במהדרים, קבצי כותרת ונכסי בדיקות כי אין בנייה רב של הביט.
- 13:19היעדר דוקר אגנור מזמין מחברות, מתמונים ומשקולות ניסיוניות לשכבות הייצור.
- 13:24כל פריסה מושכת גיגה ביתים דרך הרשת.
- 13:27כשתרחיב את זה לנוד פולס, הפעלה קרה הופכת למדיניות, לא לחריגה.
- 13:31הראיות אינן מסתוריות.
- 13:33ההיסטוריה של דוקר מספרת את הסיפור בשכבות.
- 13:35זמן הריצה חושף את השכבה השנייה של השחיקה.
- 13:38ללא דגלי GPU מפורשים, אין GPUs בדוקר או חוסר בהגדרת תוסף התקן בקאברנץ, התהליך לא רואה התכני אנווידיה.
- 13:47קונפיגורציות שגויות בין ויידיה קונטיינאר טולקיט מסתירות את לייב קודה.
- 13:51אז ככה, ספק הביצוע נטען עם מגבלות או לא נטען בכלל.
- 13:55מיג לא נאכף, לכן עומסי עבודה נלחמים על פרוסות זיכרון ומבזבזים משאבים שהמתזמנים לא מבינים.
- 14:00היומנים נשארים מנומסים, הביצועים מדממים החוצה.
- 14:02התנהגות הזיכרון היא השכבה השלישית.
- 14:04כברירת מחדל, זירת הזיכרון קודה של אונאקס רנדיים שומרת הקצאות בצורה אגרסיבית.
- 14:08תחת עומס במקביל זה נראה יציב, עד שהזירה תופסת יותר מדי ומאועבת לבקשות חדשות.
- 14:13זיכרון מוצמד לא מוגדר, כך שהעברות מערח התקן קורות דרך מאגרים ניתנים לדפדוף והופכות את ה-PCIE לצוואר בקבוק.
- 14:20קלט, פלט לא קשור להתקן, לכן טנזורים מקפצים בין ה-CPU ל-GPU ויוצרים ניסי השאיה בלתי נראים.
- 14:25התנהגות הזנב מחמירה ראשונה, ואז החציון עוקב אחריה.
- 14:29ככה נראה סט הסימפטומים בשטח.
- 14:30התפוקה האפקטיבית מפגרת למרות ניצול GPU מתון.
- 14:34השאיה תחת עומס קל היא מקובלת, אבל ה-P95 מתנדנד תחת מקביליות ואז מזנק ללא צפי.
- 14:40הריגות אום מזדמנות מאפסות רפליקות בשיא התעבורה ויוצרות התנהגות עדר.
- 14:50חשוב על היגיינת קונטיינרים כעל טיפול בראיות.
- 14:54בנייה רב שלבית מסירת טביעות אצבע.
- 14:56מהדרים ווכלי פיתוח לעולם לא נכנסים לזמן הריצה.
- 14:59אם בסיס מסוג DestroyS או Slim מצמצם את שטח הפנים ומקטין את זמן המשיכה.
- 15:03ביקורות של Docker Slim או Dive מאשרות מה שרד את הבנייה.
- 15:06קובץ Docker Ignore מונע נפח מקרי.
- 15:09התוצאה היא ניקיון פורנזי.
- 15:10מה שרץ הוא רק מה שצריך לרוץ.
- 15:12צינרת ה-GPUs קוקה להצהרות מפורשות.
- 15:15בדוקר הצהר על GPUs כולם או על פורסת מיג מדויקת.
- 15:19בקאברנץ בקש משאבי NVIDIA COM GPU ווודא שהתקן התוסף תואם לענף הדרייבר שלך.
- 15:25בהפעלה ווודא נוכחות התקן ותאימות דרייבר.
- 15:28NVIDIA SME וLD CONFIG הם לא לקישות, הם בדיקות קבלה.
- 15:32אם מה שהוא חסר או לא תואם, תעת זאת כהפרה וצא.
- 15:35אז כוון את ONUX Runtime וטנסורט עם כוונה תחילה.
- 15:38נעל את סדר ספק הביצוע על אינטיבי GPU בלבד בסביבת ייצור.
- 15:41שקול לבטל או לכוונן מחדש את אזור הזיכרון של קודה כאשר הוא עוגר משאבים מעבר לאומס העבודה שלך.
- 15:47הגבל צמיחה או קבע הקצאה מראש לגבולות צפויים.
- 15:50הפעל FP16 כברירת מחדל כאשר מגבלות הדיוק מאפשרות זאת.
- 15:54התנה INT8 בבדיקת דיוק.
- 15:56קשור קלט פלט לזיכרון ההתקן כדי שהנתונים יגיעו למקום שבו מתבצע החישוב.
- 16:01הובחר זרמים בזהירות כדי למנוע חסימת ראש תור.
- 16:03ווודא שהדברים נשמרים באמצעות שני שערים, בריאות וביצועים.
- 16:07בריאות היא לא רק סטטוס 200, היא תמונת מצב מאומתת של היכולות.
- 16:10ספקים טעונים, ליבות מאוחדות נוכחות, ליבות תנזור מזוהות וכלת פלט מוגדר.
- 16:15ביצועים הם קבוצת הנחיות בסיסית שרצה, חם, בעלייה, עם חלון השיה ורף ניצול מינימלי.
- 16:21אם הקונטיינר לא עומד בשניהם, הוא לא מורשה להיכנס לשירות.
- 16:24עצמד תקציבי גודל משיכה, פול סייז, לשיא כך שתמונות החורגות מהסף יכשילו את הבנייה.
- 16:28שמור תיעוד שינויים של תוכן התמונה לפי תמצית, דייג'סט, כדי ששחזורים יחזירו קוד תקים.
- 16:33הראיות מראות שקונטיינרים לא רק מריצים תוכנה, הם מקודדים התנהגות תחת אומס.
- 16:38כשהם רועשים, כבדים או מאורפלים לגבי ה-GPU, הם הופכים את ההיעצה לטקס חסר תועלת.
- 16:42כשהם רזים, ברורים ואסרטיביים, הם שומרים על הנתיב המהיר ששילמת עבורו.
- 16:46בסביבה הזו, שום דבר אינו מקרי.
- 16:48הקונטיינר או שעוזר ל-GPU לבצע את עבודתו, או שהוא מפריע לו.
- 16:52מעבדת, פורנזיקה, מדדים שמרשיעים.
- 16:54השהיה, תפוקה, ניצול.
- 16:56ראיות מנצחות דעות, לכן אנו מקבים את קבוצת ההנחיות, נועלים את זרעי האקריות ומריצים את המערכת חם.
- 17:01אותם מתזמנים, אותם צעדים, 25 עבור 512 מורחב ל-50 עבור 1024 על 1024 כדי לחשוף עומס.
- 17:09הקונקורנציה מוחזקת על 16 עם סוויפ ל-32.
- 17:13גודל הבוטש מתחיל ב-1 ועולה בזהירות עד שגבולות הו-RAM משמיעים את כולם.
- 17:16ללא אקסטרפולציה, ללא תירוצים, רק שעונים ומונים.
- 17:20ההשאיה מעידה ראשונה.
- 17:21במצב המושפל, ה-CPU Fallback, או נתיב האטנציה הגנרי, P50 בית מינוס 512 על 512, נמתח לדו ספרתי.
- 17:28P95 מספר את הסיפור האמיתי.
- 17:30הוא נודד ל-20 עד 40 שניות באופן בלתי צפוי, כיתורים מחמירים חוסר יעילות קטן.
- 17:35בית מינוס 1024 על 1024 עם 50 צעדים, P95 הופך לחישלון מרגע ההגעה.
- 17:41לאחר התיקון, עם GPU EP נעול, Attention מאוחד פעיל וקלט, פלט קשור להתקן,
- 17:46P50 חוזר לספרה אחת ו-P95 מתכווץ לתוך התקציב.
- 17:50הטווח מצטמצם, המערכת הופכת לצפויה.
- 17:53התפוקה מאשרת זאת.
- 17:54בקונקורנציה 16, הנתיב המושפל מניב טפטוף בלבד.
- 17:58תמונות לדקה בקושי עולות עם רפליקות כי כל מופע תוקע את עצמו.
- 18:02הגדלה ל-32 מחפילה את התחרות על המשאבים, לא את התפוקה.
- 18:05לאחר התיקון, הקשר מתיישר.
- 18:07תמונות לדקה עולות כמעט לנערית עד שמחזור העבודה של ליבות הטנזור רבוי או שה-C מגביל את הבוטש.
- 18:13ההבדל בשיפוע הוא ההוכחה.
- 18:14העבודה אכן חוצה את קו הסיום מהר יותר, לא רק ברעש, רב יותר.
- 18:18הניצול סוגר את התיק.
- 18:19לפני כן, מחזור העבודה של ה-GPU נע בין אחוז למד מינוס 50 אחוזים עם עמקים שטוחים וארוכים.
- 18:25מוני הפסי מציגים רעש מהעברות זיכרון הניתנות לגישה פייג'י אבר.
- 18:29לאחר מכן, מחזור העבודה מתייצב לרצועה גבוהה ועקבית עם מעורבות גלויה של ליבות טנזור.
- 18:36ה-CPU חוזר לתזמור ועיבוד מקדים קל.
- 18:39קפיצות בפסי מתקבצות כי זיכרון מוצמד, פינד וקישור IO בתלות העבורה מיותרת.
- 18:44שום דבר אחר לא מסביר את השינוי הזה חוץ מהעצה ממשית.
- 18:46אנחנו מוסיפים בדיקת מאמץ צולבת.
- 18:48מתחת ל-512 על 512 בית מינוס 25 צעדים, הנתיב המיוצב שומר על מקביליות של 16 ללא קפיצות זנב.
- 18:53דחיפה ל-32 והמערכת מתדרדרת בצורה מבוקרת.
- 18:57מדד פי 95 מתרחב באופן צפוי, לא כאוטי.
- 19:00תחת 1024 על 1024 בית מינוס 50 צעדים, ההבדל מוגדל.
- 19:04הנתיב הלא מיוצב קורס לזמני קצובה, טיימאוטס.
- 19:07הנתיב המוקשה שומר על פי 50 שימושי ופי 95 קביל עם בצ של 1 עד 2 עד לגבולות הו-RAM.
- 19:12כאן זירות, ארינז, וזרמים, סטריםס, הם קריטיים.
- 19:15לאחר הכבנון, חסימות ראש התור פוחתות.
- 19:17זווית העלות היא חשבון פשוט, בקשות לשעת GPU מטפסות פי 2 עד 5 כאשר תשומת לב מאוחדת,
- 19:23פיוז דטנשון, באף פי 16 וקישור IO מאומתים.
- 19:25העלות האפקטיבית למד מינוס אלף תמונות יורדת בהתאם.
- 19:28כנסות הפעלה קרה מתכווצים כי הדימויים רזים והמנועים בנויים מראש.
- 19:32צמתים מפסיקים לשלם מס הידור במפגש הראשון.
- 19:35הספר הראשי מסכים עם הלוגים.
- 19:37עימות מונע הרצות בנות מזל.
- 19:39חזור על כך בברכת צמתים שנייה עם גרסת מנהל התקן משנית שונה.
- 19:42הדימוי המוקשה מסרב לעלות על צומת לא תואם לפי תכנון.
- 19:46לכן, התוצאות ניתנות להשוואה ולא מבלבלות.
- 19:49בדוק צילום מצב של יכולות.
- 19:51אותו סדר ספקים, אותו טנסור RT, אותן טענות קרנל.
- 19:54הרץ שוב את סט ההנחיות וקלות מחדש את ההתפלגויות.
- 19:58כשההיסטוגרמות חופפות, הביטחון עולה.
- 20:00כשהן לא, הפרש היכולות מסביר למה.
- 20:03בסוף, המספרים לא מתווכחים, הם מרשיעים.
- 20:05השיה מתכווצת, התפוקה גדלה, הניצול מתייצב.
- 20:09הפתולוגיה אינה היפותטית.
- 20:10היא ניתנת למדידה, ואחריה היא מותירה טביעות אצבע על כל גרף.
- 20:14פרוטוקול התיקון, רשימת טיוג חוזרת להקשכה.
- 20:18בקרת קבלה מגיעה ראשונה.
- 20:20סרב להפעלה אם ספקי ביצוע של טנסור RT או קודה אינם נוכחים.
- 20:24מנס ספקים, עמת ספירת התקנים,
- 20:26הדפס צילומי מצב של יכולות,
- 20:28CU-DNN, FP-16, סביבת עבודה IN-T8.
- 20:31אם מה שהוא חסר, צא עם קוד שגיאה.
- 20:33זמינות עוקבת אחרי תקינות.
- 20:35הצמדת גרסאות היא עמוד השדרה.
- 20:37שמור על ענף מנהל התקן מטריצה יחיד,
- 20:39קודה משני לכאן, גיבוי לבניית ONUX Runtime,
- 20:42טנסור RT, בני דימויי השקה כנגד אותה מטריצה.
- 20:45תייג צמתים להתאמה.
- 20:46חסום קבלה על בסיס שוויון.
- 20:48מנועי טנסור RT בנויים מראש לכל מודל ורזולוציה.
- 20:51תוכניות הן תוצרים, לא ניחושי זמן ריצה.
- 20:54היגיינת קונטיינרים משמרת את האמת.
- 20:56השתמש בבנייה רב של ביט.
- 20:57שמור את זמן הריצה ללא הפצה, דיסטרו-ס או רזה.
- 21:00כלול דוקר איגנור קפדני.
- 21:01אמת עם היסטוריית דוקר וביקורת הרזיה.
- 21:04הגדר תקציבי גודל בריכה ב-C.
- 21:06ייקשל בדימויים מנופחים,
- 21:07חתום על דימויים ובדוק תוכן לפי תמצית,
- 21:10דייג'סט.
- 21:10הגדר GPU תחילה,
- 21:12נעל את סדר ה-EP לטנסורט קודה,
- 21:14ובטל את ספק ה-CPU בייצור.
- 21:16אמת נוכחות של אנווידי הדב וגרסת ערכת הכלים של אנווידי הקונטיינר.
- 21:19בקש GPU של אנווידייה נקודה קום במפורש או שלב רישיונות ואמת זאת בעת ההפעלה.
- 21:24כוונן את זמן הריצה.
- 21:25אפשר FP-16 כברירת מחדל.
- 21:28הגבל INT-8 באמצעות בדיקות דיוק.
- 21:30קשור I.O. ישירות לזיכרון ההתקן.
- 21:33אפשר זיכרון מוצמד.
- 21:34ובחר זרמים למניעת חסימת Head of Line.
- 21:37כוונן מחדש או בטל את זירת ה-Ort CUDA,
- 21:39כאשר היא נעצרת מעבר לסט העבודה.
- 21:41הגדר SLS של ביצועים כקוד,
- 21:43בדיקה עצמית בהפעלה עם חלון השיה של הנחיות דטרמיניסטיות ורף ניצול.
- 21:47היא קשל במקרה של צבירת פיגורים.
- 21:49אוסף יכולת תצפית, מדדי GPU לכל בקשה,
- 21:52התראות על מסלול פגום,
- 21:53הנחיות קנרי וקווי בסיס להשוואה.
- 21:56בצע פריסת בלו-גרין עם שערי ביצועים וחזרה אוטומטית במקרה של חריגה.
- 22:00כאשר הפרוטוקול נאכף,
- 22:02העצה היא מוכחת, לא מונחת.
- 22:05הלקח הוא קליני.
- 22:06נסיגת CPU שקטה, זליגת גרסאות ונפיחות קונטיינרים אינן בגים.
- 22:10אלו דפוסי קשל צפויים שניתן לחסום.
- 22:12הרץ את הפרוטוקול, מדוד ניצול GPU,
- 22:14סירב למסלולים פגומים,
- 22:16קבע גרסאות והתייחס למנועים כאל-ארטיפקטים.
- 22:18אם תרצה צלילה עמוקה יותר לזמן הריצה של אונאקס
- 22:21ולהתנהגות הזיכרון של טנסר-ארטי ומתי להשביט זירות,
- 22:24צפה במקרה הבא בסדרה זו והירשם להערות המעבדה.