שימוש ב-ML וב-AI עם BigQuery DataFrames
הספרייה bigframes.ml ב-BigQuery DataFrames מאפשרת לשלב יכולות של AI ולמידת מכונה (ML) בתהליכי העבודה של ניתוח הנתונים. עיבוד מראש של נתונים, אימון מודלים ויצירת פייפליינים של ML ישירות ב-BigQuery מאפשרים לכם להרחיב את ניתוח הנתונים בלי לחלץ קבוצות נתונים ממחסן הנתונים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לביצוע המשימות שמפורטות במאמר הזה, בקשו מהאדמין לתת לכם את התפקידים הבאים ב-IAM ברמת הפרויקט:
-
שימוש במודלים מרוחקים או בפונקציות AI:
אדמין של חיבור BigQuery (
roles/bigquery.connectionAdmin) -
שימוש ב-BigQuery DataFrames ב-BigQuery Notebook:
- BigQuery User (
roles/bigquery.user) - משתמש בסביבת זמן ריצה של Notebook (
roles/aiplatform.notebookRuntimeUser) - Code Creator (
roles/dataform.codeCreator)
- BigQuery User (
-
שימוש בחיבור ברירת המחדל ל-BigQuery:
- עריכה של נתוני BigQuery (
roles/bigquery.dataEditor) - אדמין של חיבור BigQuery (
roles/bigquery.connectionAdmin) - מפתח Cloud Functions (
roles/cloudfunctions.developer) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - צפייה באובייקטים באחסון (
roles/storage.objectViewer)
- עריכה של נתוני BigQuery (
-
שימוש במודלים מרוחקים של BigQuery DataFrames ML:
אדמין של חיבור BigQuery (
roles/bigquery.connectionAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מיקומים של למידת מכונה
הספרייה bigframes.ml תומכת באותם מיקומים כמו BigQuery ML. חיזוי מודלים של BigQuery ML ופונקציות אחרות של למידת מכונה נתמכים בכל האזורים של BigQuery. התמיכה באימון מודלים משתנה בהתאם לאזור. מידע נוסף זמין במאמר מיקומים של BigQuery ML.
עיבוד מראש של נתונים
ליצור טרנספורמטורים כדי להכין נתונים לשימוש במעריכים (מודלים) באמצעות המודול bigframes.ml.preprocessing והמודול bigframes.ml.compose.
ב-BigQuery DataFrames אפשר לבצע את הטרנספורמציות הבאות:
כדי לחלק נתונים רציפים למרווחים, משתמשים במחלקה
KBinsDiscretizerבמודולbigframes.ml.preprocessing.כדי לנרמל את תוויות היעד כערכים של מספרים שלמים, משתמשים במחלקה
LabelEncoderבמודולbigframes.ml.preprocessing.כדי לשנות את קנה המידה של כל מאפיין לטווח
[-1, 1]לפי הערך המוחלט המקסימלי שלו, משתמשים ב-classMaxAbsScalerבמודולbigframes.ml.preprocessing.כדי לתקנן תכונות על ידי התאמת קנה המידה של כל תכונה לטווח
[0, 1], משתמשים במחלקהMinMaxScalerבמודולbigframes.ml.preprocessing.כדי לתקנן תכונות על ידי הסרת הממוצע ושינוי קנה המידה לשונות יחידה, משתמשים במחלקה
StandardScalerבמודולbigframes.ml.preprocessing.כדי להמיר ערכים קטגוריים לפורמט מספרי, משתמשים ב-class
OneHotEncoderבמודולbigframes.ml.preprocessing.כדי להחיל טרנספורמרים על עמודות של DataFrames, משתמשים במחלקה
ColumnTransformerבמודולbigframes.ml.compose.
אימון מודלים
אתם יכולים ליצור אומדנים כדי לאמן מודלים ב-BigQuery DataFrames.
מודלים של אשכולות
אפשר ליצור אומדנים למודלים של אשכולות באמצעות המודול bigframes.ml.cluster.
כדי ליצור מודלים של אשכולות K-means, משתמשים במחלקה KMeans. המודלים האלה משמשים לפילוח נתונים. לדוגמה, זיהוי פלחי לקוחות. K-means היא שיטת למידה לא מפוקחת, ולכן לא צריך תוויות או נתונים מפוצלים כדי לאמן או להעריך את המודל.
אפשר להשתמש במודול bigframes.ml.cluster כדי ליצור אומדנים למודלים של אשכולות.
דוגמת הקוד הבאה ממחישה איך משתמשים במחלקה bigframes.ml.cluster KMeans כדי ליצור מודל אשכולות k-means לפילוח נתונים:
מודלים של פירוק
אפשר ליצור אומדנים למודלים של פירוק באמצעות המודול bigframes.ml.decomposition.
כדי ליצור מודלים של ניתוח רכיבים עיקריים (PCA), משתמשים במחלקה PCA. אפשר להשתמש במודלים האלה כדי לחשב רכיבים עיקריים ולהשתמש בהם כדי לבצע שינוי בבסיס הנתונים. השימוש במחלקה PCA מספק הפחתת ממדים על ידי הקרנה של כל נקודה על הגרף רק על הרכיבים העיקריים הראשונים, כדי לקבל נתונים בממדים נמוכים יותר תוך שמירה על כמה שיותר מהשונות של הנתונים.
מודלים משולבים (ensemble)
אפשר ליצור אומדנים למודלים של אנסמבל באמצעות המודול bigframes.ml.ensemble.
כדי ליצור מודלים של מסווג יער אקראי, משתמשים במחלקה
RandomForestClassifier. המודלים האלה משמשים לבניית עצי החלטות של שיטות למידה מרובות לסיווג.כדי ליצור מודלים של רגרסיה מסוג יער אקראי, משתמשים במחלקה
RandomForestRegressor. אפשר להשתמש במודלים האלה כדי לבנות כמה עצי החלטות של שיטות למידה לרגרסיה.כדי ליצור מודלים של סיווג עץ עם חיזוק גרדיאנט, משתמשים במחלקה
XGBClassifier. המודלים האלה משמשים לבנייה מצטברת של עצי החלטות של שיטות למידה מרובות לצורך סיווג.כדי ליצור מודלים של רגרסיה של עץ עם חיזוק גרדיאנט, משתמשים במחלקה
XGBRegressor. המודלים האלה משמשים לבנייה מצטברת של עצי החלטות של שיטות למידה מרובות לרגרסיה.
מודלים של תחזיות
אפשר ליצור אומדנים למודלים של חיזוי באמצעות המודול bigframes.ml.forecasting.
כדי ליצור מודלים לחיזוי סדרות זמנים, משתמשים במחלקה ARIMAPlus.
מודלים שיובאו
אפשר ליצור אומדנים למודלים מיובאים באמצעות המודול bigframes.ml.imported.
כדי לייבא מודלים של Open Neural Network Exchange (ONNX), משתמשים במחלקה
ONNXModel.כדי לייבא מודל TensorFlow, משתמשים ב-מחלקה
TensorFlowModel.כדי לייבא מודלים של XGBoostModel, משתמשים במחלקה
XGBoostModel.
מודלים לינאריים
ליצור אומדנים למודלים ליניאריים באמצעות המודול bigframes.ml.linear_model.
כדי ליצור מודלים של רגרסיה ליניארית, משתמשים במחלקה
LinearRegression. אפשר להשתמש במודלים האלה לחיזוי, למשל חיזוי המכירות של פריט ביום נתון.כדי ליצור מודלים של רגרסיה לוגיסטית, משתמשים במחלקה
LogisticRegression. המודלים האלה משמשים לסיווג של שני ערכים אפשריים או יותר, למשל אם הקלט הואlow-value, medium-valueאוhigh-value.
דוגמת הקוד הבאה מראה איך משתמשים ב-bigframes.ml כדי:
- לטעון נתונים מ-BigQuery.
- לנקות ולהכין נתוני אימון.
- יוצרים מודל רגרסיה מסוג bigframes.ml.LinearRegression ומחילים אותו.
מודלי שפה גדולים (LLM)
אפשר ליצור אומדנים למודלים גדולים של שפה באמצעות המודול bigframes.ml.llm.
כדי ליצור מודלים של מחוללי טקסט ב-Gemini, משתמשים ב-class
GeminiTextGenerator. אפשר להשתמש במודלים האלה למשימות של יצירת טקסט.כדי ליצור אומדנים למודלים גדולים של שפה (LLM) מרוחקים, משתמשים במודול
bigframes.ml.llm.
בדוגמת הקוד הבאה מוסבר איך משתמשים במחלקה bigframes.ml.llm
GeminiTextGenerator כדי ליצור מודל Gemini ליצירת קוד:
מודלים מרוחקים
כדי להשתמש במודלים מרוחקים של BigQuery DataFrames ML (bigframes.ml.remote או bigframes.ml.llm), צריך להפעיל את ממשקי ה-API הבאים:
כשמשתמשים במודלים מרוחקים של BigQuery DataFrames ML, צריך את התפקיד אדמין של IAM בפרויקט (roles/resourcemanager.projectIamAdmin) אם משתמשים בחיבור ברירת המחדל של BigQuery, או את התפקיד דפדפן (roles/browser) אם משתמשים בחיבור שהוגדר מראש. כדי להימנע מהדרישה הזו, אפשר להגדיר את האפשרות bigframes.pandas.options.bigquery.skip_bq_connection_check לערך True. במקרה כזה, החיבור (ברירת המחדל או החיבור שהוגדר מראש) משמש כמו שהוא, בלי בדיקת קיום או הרשאות. אם אתם משתמשים בחיבור שהוגדר מראש ומדלגים על בדיקת החיבור, ודאו ש:
- החיבור נוצר במיקום הנכון.
- אם אתם משתמשים במודלים מרוחקים של BigQuery DataFrames ML, לחשבון השירות יש את התפקיד "משתמש בפלטפורמת הסוכן" (
roles/aiplatform.user) בפרויקט.
כשיוצרים מודל מרוחק ב-BigQuery DataFrames, נוצר חיבור ל-BigQuery.
כברירת מחדל, המערכת משתמשת בחיבור בשם bigframes-default-connection. אם אתם מעדיפים, אתם יכולים להשתמש בחיבור מוגדר מראש ל-BigQuery, ובמקרה כזה המערכת תדלג על יצירת החיבור. לחשבון השירות של החיבור שמוגדר כברירת מחדל מוקצה התפקיד משתמש בפלטפורמת Agent (roles/aiplatform.user) בפרויקט.
יצירת צינורות עיבוד נתונים
אפשר ליצור צינורות עיבוד נתונים ל-ML באמצעות המודול bigframes.ml.pipeline.
באמצעות צינורות עיבוד נתונים אפשר להרכיב כמה שלבי למידת מכונה כדי לבצע אימות צולב ביחד, תוך הגדרת פרמטרים שונים. כך הקוד פשוט יותר, ואפשר לפרוס את שלבי העיבוד המקדים של הנתונים ואת המעריך ביחד.
כדי ליצור צינור עיבוד נתונים של טרנספורמציות עם אומדן סופי, משתמשים במחלקה Pipeline.
בחירת מודלים
כדי לפצל את מערכי הנתונים לאימון ולבדיקה ולבחור את המודלים הטובים ביותר, משתמשים במודול bigframes.ml.model_selection:
כדי לפצל את הנתונים לאימון ולבדיקה (קבוצות הערכה), כמו שמוצג בדוגמת הקוד הבאה, משתמשים בפונקציה
train_test_split:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)כדי ליצור קבוצות אימון ובדיקה בכמה שלבים לאימון ולהערכה של מודלים, כמו שמוצג בדוגמת הקוד הבאה, משתמשים ב-
KFoldclass וב-KFold.splitmethod. התכונה הזו שימושית במערכי נתונים קטנים.kf = KFold(n_splits=5) for i, (X_train, X_test, y_train, y_test) in enumerate(kf.split(X, y)): # Train and evaluate models with training and testing setsכדי ליצור באופן אוטומטי קבוצות אימון ובדיקה עם כמה קיפולים, לאמן ולהעריך את המודל ולקבל את התוצאה של כל קיפול, כמו שמוצג בדוגמת הקוד הבאה, משתמשים בפונקציה
cross_validate:scores = cross_validate(model, X, y, cv=5)
המאמרים הבאים
- מידע על מערכת סוגי הנתונים של BigQuery DataFrames
- איך יוצרים קוד של BigQuery DataFrames באמצעות Gemini
- איך מנתחים הורדות של חבילות מ-PyPI באמצעות BigQuery DataFrames
- ב-GitHub אפשר לראות את קוד המקור, דוגמאות ל-notebooks ודוגמאות ל-BigQuery DataFrames.
- מאמרי העזרה של BigQuery DataFrames API