שימוש ב-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 clustering לפילוח נתונים:

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. אפשר להשתמש במודלים האלה למשימות של יצירת טקסט.

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

יצירת מודל מרוחק ב-BigQuery DataFrames יוצרת חיבור ל-BigQuery. כברירת מחדל, נעשה שימוש בחיבור בשם bigframes-default-connection. אם אתם מעדיפים, אתם יכולים להשתמש בחיבור BigQuery שהוגדר מראש. במקרה כזה, יצירת החיבור תדלג. לחשבון השירות של חיבור ברירת המחדל מוקצה התפקיד Agent Platform User role (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)
    

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