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

‫BigQuery DataFrames מספק יכולות של ML ו-AI ל-BigQuery DataFrames באמצעות ספריית bigframes.ml.

אתם יכולים לעבד מראש נתונים, ליצור אומדנים לאימון מודלים ב-BigQuery DataFrames, ליצור צינורות ML ולפצל מערכי נתונים לאימון ולבדיקה.

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

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

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

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

מיקומי ML

ספריית bigframes.ml תומכת באותם מיקומים כמו BigQuery ML. חיזוי מודלים של BigQuery ML ופונקציות אחרות של ML נתמכים בכל האזורים של BigQuery. התמיכה באימון מודלים משתנה בהתאם לאזור. מידע נוסף זמין במאמר מיקומים ב-BigQuery ML.

עיבוד מקדים של נתונים

יוצרים טרנספורמציות כדי להכין את הנתונים לשימוש באומדים (מודלים) באמצעות המודול bigframes.ml.preprocessing והמודול bigframes.ml.compose. הספרייה BigQuery DataFrames מציעה את ההמרות הבאות:

  • כדי להגדיר נתונים רציפים במרווחים, משתמשים במחלקה KBinsDiscretizer במודול bigframes.ml.preprocessing.

  • כדי לנרמל את תוויות היעד כערכים שלמים, משתמשים בבמחלקת LabelEncoder במודול bigframes.ml.preprocessing.

  • כדי לשנות את קנה המידה של כל תכונה לטווח [-1, 1] לפי הערך המקסימלי המוחלט שלה, צריך להשתמש במחלקה MaxAbsScaler במודול bigframes.ml.preprocessing.

  • כדי לתקנן תכונות על ידי שינוי קנה המידה של כל תכונה לטווח [0, 1], צריך להשתמש במחלקה MinMaxScaler במודול bigframes.ml.preprocessing.

  • כדי לתקנן תכונות על ידי הסרת הממוצע ושינוי קנה המידה לשונות של יחידה, צריך להשתמש בבמחלקת StandardScaler במודול bigframes.ml.preprocessing.

  • כדי להמיר ערכים קטגוריים לפורמט מספרי, משתמשים בבמחלקה 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 module. כדי ליצור מודלים של ניתוח רכיבים עיקריים (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.
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, משתמשים בGeminiTextGenerator class. אפשר להשתמש במודלים האלה למשימות של יצירת טקסט.

  • כדי ליצור אומדנים למודלים גדולים של שפה (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 ML, לחשבון השירות יש את התפקיד Vertex AI User (roles/aiplatform.user) בפרויקט.

יצירת מודל מרוחק ב-BigQuery DataFrames יוצרת חיבור ל-BigQuery. כברירת מחדל, נעשה שימוש בחיבור בשם bigframes-default-connection. אם אתם מעדיפים, אתם יכולים להשתמש בחיבור BigQuery שהוגדר מראש, ובמקרה כזה דילגנו על יצירת החיבור. לחשבון השירות של חיבור ברירת המחדל מוקצה התפקיד משתמש ב-Vertex AI (roles/aiplatform.user) בפרויקט.

יצירת צינורות עיבוד נתונים

אפשר ליצור צינורות עיבוד נתונים ללמידת מכונה באמצעות מודול 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 ובשיטה KFold.split. התכונה הזו שימושית למערכי נתונים קטנים.

    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)
    

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