# BigQuery ML in SQL > BigQuery ML trains and runs models with CREATE MODEL and ML.PREDICT. Built-in models train inside BigQuery and are billed per byte read, at 50 times the normal query rate. Here is what each step returns, what it costs, and the defaults that quietly change your results. Source: https://docs.querylab.io/bigquery/bigquery-ml/ Updated: 2026-10-06 BigQuery ML lets you train a model with `CREATE MODEL ... AS SELECT`, then call it from a query with `ML.PREDICT`, `ML.EVALUATE` or `ML.EXPLAIN_PREDICT`. The model is an object in a dataset. Training reads your data once or many times depending on the model type, and you pay for the bytes it reads at $312.50 per TiB for the simple built-in models, 50 times the $6.25 per TiB of an on-demand query. Prediction and evaluation are billed at the normal query rate. BigQuery ML isn't available in the Standard edition. ## The steps, run on a tiny model Everything below we ran on real BigQuery against a linear regression of house price on size and bedrooms. These are plain blocks, not runnable on this page, because a model has to be created in a dataset: `CREATE TEMP MODEL` failed in our test. ```sql CREATE OR REPLACE MODEL mydataset.price_model OPTIONS (model_type = 'LINEAR_REG', input_label_cols = ['price'], data_split_method = 'NO_SPLIT') AS SELECT sqft, bedrooms, price FROM UNNEST([ STRUCT(600 AS sqft, 1 AS bedrooms, 150.0 AS price), STRUCT(800, 2, 200.0), STRUCT(1000, 2, 240.0), STRUCT(1200, 3, 310.0), STRUCT(1500, 3, 365.0), STRUCT(1800, 4, 450.0), STRUCT(2000, 4, 480.0), STRUCT(2400, 5, 600.0)]) ``` The training data came from an inline `UNNEST`, so the job processed 0 bytes and was billed 0. Eight rows still took 100 seconds, and the job statistics show 20 iterations of 2.5 to 6.5 seconds each (the default `max_iterations` is 20). Creating a model takes minutes even when the data is tiny. `ML.PREDICT` returns your input columns plus `predicted_