GCP AI プラットフォーム トレーニング サービスにトレーニング ジョブを送信しています。私のトレーニング データセット (同じ GCP プロジェクトの BigQuery テーブルで約 4,000 万行) は、トレーニング ジョブの開始時に pandas データフレームとして前処理する必要があるため、GCP ドキュメントで提案されている両方のソリューションを試しました。
pandas_gbq API:
pd.read_gbq(query, project_id=PROJECT, dialect='standard', use_bqstorage_api=True)
google-cloud-bigquery API:
client.query(query).to_dataframe(bqstorage_client=bqstorage_client)
どちらの方法も AI プラットフォーム ノートブック VM で機能し、4,000 万行のデータセット全体を pandas データフレームとして数分でダウンロードします。AI プラットフォーム トレーニング サーバー (n1-highmem-16 マシンで実行される) で同じ手順を再現するのに苦労しています。pandas-gbq API の場合、許可拒否エラーが発生します。
google.api_core.exceptions.PermissionDenied: 403 request failed: the user does not have bigquery.readsessions.create' permission for 'projects/acn-c4-crmdataplatform-dev'
google-cloud-bigquery API の場合、エラーはありません。
GCP のドキュメントで提案されているように、トレーナー パッケージの setup.py ファイルを使用して AI プラットフォーム トレーニング ジョブに渡す必須パッケージのリストを次に示します。
- テンソルフロー==2.1.0
- numpy==1.18.2
- パンダ== 1.0.3
- google-api-core==1.17.0
- google-cloud-core==1.3.0
- pyarrow==0.16.0
- pandas-gbq==0.13.1
- google-cloud-bigquery-storage==0.8.0
- google-cloud-bigquery==1.24.0