BigQuery ML pricing

Always free usage limits

As part of the Google Cloud Free Tier, BigQuery offers some resources free of charge up to a specific limit. These free usage limits are available during and after the free trial period. If you go over these usage limits and are no longer in the free trial period, you will be charged according to the pricing on this page.

Resource Monthly free usage limits Details
Storage The first 10 GB per month is free. BigQuery ML models and training data stored in BigQuery are included in the BigQuery storage free tier.
Queries (analysis) The first 1 TB of query data processed per month is free. Queries that use BigQuery ML prediction, inspection, and evaluation functions are included in the BigQuery analysis free tier. BigQuery ML queries that contain CREATE MODEL statements are not.
BigQuery flat-rate pricing is also available for high-volume customers that prefer a stable, monthly cost.
BigQuery ML CREATE MODEL queries The first 10 GB of data processed by queries that contain CREATE MODEL statements per month is free. BigQuery ML CREATE MODEL queries are independent of the BigQuery analysis free tier, and only apply to BigQuery ML built-in models (models that are trained within BigQuery).

BigQuery ML pricing

BigQuery ML models can be classified into two different categories: built-in models and external models. BigQuery ML built-in models are trained within BigQuery, such as linear regression, logistic regression, kmeans, matrix factorization, and time series models. BigQuery ML external models are trained utilizing other Google Cloud services, DNN and boosted tree models (which are trained on AI Platform) and AutoML models (which are trained on the AutoML Tables backend). BigQuery ML model training pricing is based on the model type as well as your usage pattern: flat-rate or on-demand. BigQuery ML prediction and evaluation functions are executed within BigQuery ML for all model types, priced as explained below.

BigQuery ML flat-rate pricing

BigQuery offers flat-rate pricing for high-volume or enterprise customers who prefer a stable monthly cost rather than paying the on-demand price for model creation, evaluation, inspection, and prediction.

For current models, you can use reservations to train in BigQuery ML. If you choose flat-rate pricing, BigQuery ML costs are included in the monthly BigQuery flat-rate price.

Reservations to create built-in models

Like BigQuery queries, slots from reservation assignments with job type QUERY are used to run CREATE MODEL queries for BigQuery ML built-in models.

Reservations to create external models

You must have both reservation assignments with job type QUERY and job type ML_EXTERNAL to run CREATE MODEL queries for BigQuery ML external models. The QUERY type slots are used for preprocessing queries which run within BigQuery, and the ML_EXTERNAL type slots are used to run model training on external Google Cloud services. Please follow reservations workload management to create reservations for external model training jobs. The slots usage per job is calculated to maintain the price parity between BigQuery slot and external Google Cloud service costs.

BigQuery ML on-demand pricing

BigQuery ML pricing for on-demand queries depends on the type of operation: model type, model creation, model evaluation, model inspection, or model prediction.

Matrix factorization models are only available to flat-rate customers or customers with reservations. On-demand customers are encouraged to use flex slots to use matrix factorization.

For time series models, when auto-arima is enabled for automatic hyper-parameter tuning, multiple candidate models are fitted and evaluated during the training phase. In this case, the number of bytes processed by the input SELECT statement is multiplied by the number of candidate models.

  • For single time series forecasting with auto-arima enabled, the number of candidate models is 42 if non-seasonal d equals one, 21 otherwise.
  • For multiple time series forecasting using time_series_id_col, the charge is for 42 candidate models.
  • Note that this model selection only applies to model creation. For model evaluation, inspection, and prediction, only the selected model is used, with regular query pricing.

BigQuery ML on-demand pricing is as follows:

BigQuery ML dry run

Due to the nature of the underlying algorithms of some model types and differences in billing, the bytes processed will not be calculated for some model types until after training is completed due to the complexity of calculating the initial estimate.

BigQuery ML pricing example

BigQuery ML charges are not itemized separately on your billing statement. For current models, if you have a BigQuery flat-rate plan, BigQuery ML charges are included.

If you are using on-demand pricing, BigQuery ML charges are included in the BigQuery analysis (query) charges.

BigQuery ML jobs that perform inspection, evaluation, and prediction operations incur the same charges as on-demand query jobs. Because CREATE MODEL queries incur different charges, you must calculate CREATE MODEL job costs independently by using the Stackdriver audit logs. Using the audit logs, you can determine the bytes billed by the BigQuery ML service for each BigQuery ML CREATE MODEL job. Then, multiply the bytes billed by the appropriate cost for CREATE MODEL queries in your regional or multi-regional location.

For example, to determine the cost of a query job in the US that includes a BigQuery ML CREATE MODEL statement:

  1. Open the Stackdriver Logging page in the Google Cloud Console.

  2. Verify that the product is set to BigQuery.

  3. Click the drop-down arrow in the "Filter by label or text search" box and choose Convert to advanced filter. This adds the following text to the filter:

    resource.type="bigquery_resource"
    
  4. Add the following text on line two below the resource.type line:

    protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.statementType="CREATE_MODEL"
    
  5. To the right of the Submit Filter button, choose the appropriate time frame from the drop-down list. For example, choosing Last 24 hours would display BigQuery ML CREATE MODEL jobs completed in the past 24 hours.

  6. Click Submit Filter to display the jobs completed in the given time window.

  7. After the data is populated, click View Options and choose Modify custom fields.

  8. In the Add custom fields dialog, enter:

    protoPayload.serviceData.jobCompletedEvent.job.jobStatistics.totalBilledBytes
    
  9. Click Save to update the results.

  10. After the page is updated, the bytes billed by each BigQuery ML job appear to the right of the job's timestamp. If the bytes billed are included in the free tier, no value appears. For example:

    BigQuery ML bytes billed

  11. To calculate the charges for the BigQuery ML CREATE MODEL job, multiply the bytes billed by the BigQuery ML on-demand price. In this example, the CREATE MODEL job processed 100873011200 bytes. To calculate the cost of this job in the US multi-regional location, divide the billed bytes by the number of bytes per TB, and multiply it by the model creation cost:

    100873011200/1099511627776 x $250.00 = $22.94