שימוש ב-ML וב-AI עם BigQuery DataFrames

הספרייה bigframes.ml ב-BigQuery DataFrames מאפשרת לשלב יכולות של AI ולמידת מכונה (ML) בתהליכי העבודה של ניתוח הנתונים. עיבוד מראש של נתונים, אימון מודלים ויצירת פייפליינים של ML ישירות ב-BigQuery מאפשרים לכם להרחיב את ניתוח הנתונים בלי לחלץ קבוצות נתונים ממחסן הנתונים.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות לביצוע המשימות שמפורטות במאמר הזה, בקשו מהאדמין לתת לכם את התפקידים הבאים ב-IAM ברמת הפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

מיקומים של למידת מכונה

הספרייה 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] לפי הערך המוחלט המקסימלי שלו, משתמשים ב-class MaxAbsScaler במודול 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 לפילוח נתונים:

from bigframes.ml.cluster import KMeans
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Create the KMeans model
cluster_model = KMeans(n_clusters=10)
cluster_model.fit(bq_df["culmen_length_mm"], bq_df["sex"])

# Predict using the model
result = cluster_model.predict(bq_df)
# Score the model
score = cluster_model.score(bq_df)

מודלים של פירוק

אפשר ליצור אומדנים למודלים של פירוק באמצעות המודול bigframes.ml.decomposition. כדי ליצור מודלים של ניתוח רכיבים עיקריים (PCA), משתמשים במחלקה PCA. אפשר להשתמש במודלים האלה כדי לחשב רכיבים עיקריים ולהשתמש בהם כדי לבצע שינוי בבסיס הנתונים. השימוש במחלקה PCA מספק הפחתת ממדים על ידי הקרנה של כל נקודה על הגרף רק על הרכיבים העיקריים הראשונים, כדי לקבל נתונים בממדים נמוכים יותר תוך שמירה על כמה שיותר מהשונות של הנתונים.

מודלים משולבים (ensemble)

אפשר ליצור אומדנים למודלים של אנסמבל באמצעות המודול bigframes.ml.ensemble.

  • כדי ליצור מודלים של מסווג יער אקראי, משתמשים במחלקה RandomForestClassifier. המודלים האלה משמשים לבניית עצי החלטות של שיטות למידה מרובות לסיווג.

  • כדי ליצור מודלים של רגרסיה מסוג יער אקראי, משתמשים במחלקה RandomForestRegressor. אפשר להשתמש במודלים האלה כדי לבנות כמה עצי החלטות של שיטות למידה לרגרסיה.

  • כדי ליצור מודלים של סיווג עץ עם חיזוק גרדיאנט, משתמשים במחלקה XGBClassifier. המודלים האלה משמשים לבנייה מצטברת של עצי החלטות של שיטות למידה מרובות לצורך סיווג.

  • כדי ליצור מודלים של רגרסיה של עץ עם חיזוק גרדיאנט, משתמשים במחלקה XGBRegressor. המודלים האלה משמשים לבנייה מצטברת של עצי החלטות של שיטות למידה מרובות לרגרסיה.

מודלים של תחזיות

אפשר ליצור אומדנים למודלים של חיזוי באמצעות המודול bigframes.ml.forecasting. כדי ליצור מודלים לחיזוי סדרות זמנים, משתמשים במחלקה ARIMAPlus.

מודלים שיובאו

אפשר ליצור אומדנים למודלים מיובאים באמצעות המודול bigframes.ml.imported.

מודלים לינאריים

ליצור אומדנים למודלים ליניאריים באמצעות המודול bigframes.ml.linear_model.

  • כדי ליצור מודלים של רגרסיה ליניארית, משתמשים במחלקה LinearRegression. אפשר להשתמש במודלים האלה לחיזוי, למשל חיזוי המכירות של פריט ביום נתון.

  • כדי ליצור מודלים של רגרסיה לוגיסטית, משתמשים במחלקה LogisticRegression. המודלים האלה משמשים לסיווג של שני ערכים אפשריים או יותר, למשל אם הקלט הוא low-value, ‏ medium-value או high-value.

דוגמת הקוד הבאה מראה איך משתמשים ב-bigframes.ml כדי:

  • לטעון נתונים מ-BigQuery.
  • לנקות ולהכין נתוני אימון.
  • יוצרים מודל רגרסיה מסוג bigframes.ml.LinearRegression ומחילים אותו.
from bigframes.ml.linear_model import LinearRegression
import bigframes.pandas as bpd

# Load data from BigQuery
query_or_table = "bigquery-public-data.ml_datasets.penguins"
bq_df = bpd.read_gbq(query_or_table)

# Filter down to the data to the Adelie Penguin species
adelie_data = bq_df[bq_df.species == "Adelie Penguin (Pygoscelis adeliae)"]

# Drop the species column
adelie_data = adelie_data.drop(columns=["species"])

# Drop rows with nulls to get training data
training_data = adelie_data.dropna()

# Specify your feature (or input) columns and the label (or output) column:
feature_columns = training_data[
    ["island", "culmen_length_mm", "culmen_depth_mm", "flipper_length_mm", "sex"]
]
label_columns = training_data[["body_mass_g"]]

test_data = adelie_data[adelie_data.body_mass_g.isnull()]

# Create the linear model
model = LinearRegression()
model.fit(feature_columns, label_columns)

# Score the model
score = model.score(feature_columns, label_columns)

# Predict using the model
result = model.predict(test_data)

מודלי שפה גדולים (LLM)

אפשר ליצור אומדנים למודלים גדולים של שפה באמצעות המודול bigframes.ml.llm.

  • כדי ליצור מודלים של מחוללי טקסט ב-Gemini, משתמשים ב-class GeminiTextGenerator. אפשר להשתמש במודלים האלה למשימות של יצירת טקסט.

  • כדי ליצור אומדנים למודלים גדולים של שפה (LLM) מרוחקים, משתמשים במודול bigframes.ml.llm.

בדוגמת הקוד הבאה מוסבר איך משתמשים במחלקה bigframes.ml.llm GeminiTextGenerator כדי ליצור מודל Gemini ליצירת קוד:

from bigframes.ml.llm import GeminiTextGenerator
import bigframes.pandas as bpd

# Create the Gemini LLM model
session = bpd.get_global_session()
connection = f"{PROJECT_ID}.{REGION}.{CONN_NAME}"
model = GeminiTextGenerator(
    session=session, connection_name=connection, model_name="gemini-2.0-flash-001"
)

df_api = bpd.read_csv("gs://cloud-samples-data/vertex-ai/bigframe/df.csv")

# Prepare the prompts and send them to the LLM model for prediction
df_prompt_prefix = "Generate Pandas sample code for DataFrame."
df_prompt = df_prompt_prefix + df_api["API"]

# Predict using the model
df_pred = model.predict(df_prompt.to_frame(), max_output_tokens=1024)

מודלים מרוחקים

כדי להשתמש במודלים מרוחקים של 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, נוצר חיבור ל-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)
    
  • כדי ליצור קבוצות אימון ובדיקה בכמה שלבים לאימון ולהערכה של מודלים, כמו שמוצג בדוגמת הקוד הבאה, משתמשים ב-KFold class וב-KFold.split method. התכונה הזו שימושית במערכי נתונים קטנים.

    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)
    

המאמרים הבאים