のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Google Cloud Storage(GCS)でうっかり30万以上溶かした話

Sponsored Links

皆さんこんにちは。
コンペで頑張ったので疲れました。

さて、Google Landmark 2021が終了し、Retrieval5位(金)、Recognition12位(銀)となりました。
本日は自戒と反省により、クラウドで30万円消失した話を
記録として書こうと思います。皆さん私を見て反面教師にしてください。

事象

9月入ってからLandmark2021に参加し、Google Cloud Platform、通称GCPを利用していた。
主な利用はGoogle Cloud Storageのみで、ほぼ容量課金だろうと高をくくっており、課金請求の上限など入れ忘れてました。

すると9/18に久々に請求額を確認すると32万ほどの請求額がありました。
さすがに目玉が飛び出て、調査にあたったといったものになります。

課金内容を確認したら原因はすぐにわかり、チームで対策を打ちました。(私が慌てて学習にストップかけた)

f:id:tereka:20210919012424p:plain
請求額

理由

課金の表面的な事象はGCSの大陸間通信です。
GCSはどこから利用するかにより、通信量に応じて課金がされるといった体系になっており、
この部分を完全にみおとしました。

今回、2人でLandmarkを取り組んでおり、TPUを中心に実施していました。
TPUで行う必要があったのはLandmarkが巨大なデータであったため、そして、GCSを利用したのはTFRecordをローカルに落とす必要がなかったからです。
相方のGCPインスタンスがヨーロッパ、私が格納していたデータのGCSのリージョンが北米にあったことにより、大陸間通信が膨大となり、課金されてしまったということです。

正直、チームマージして取り組む場合に大陸間通信のコストなどが影響あることを完全に見落とし、
そのあたりの共通認識を取らなかったのは大きな反省点です。
逆に言えば、チーム組む皆さんはきちんと認識を取りましょう。AWSのS3でも似たような課金体系だったはずです。

対策

1. 課金額のアラートをしかける。
シンプルですが、どんなにしょぼいものでも必ず請求アラートをしかけましょう。
何が起こるかわからないので、仕掛けておいて損はありません。
僕は油断して目玉が飛び出ました。

2. チーム内のリージョンを確認する。
データセットの共有などはストレージを利用することは多いと思います。
特にTPU関連を利用する際、GCP/GCSを利用することになるので、通信コストがかからないよう、
チームメンバーでのリージョン統一などは事前に行っておきましょう。

最後に

そもそもTPUを真面目に運用しない限り起こり得ない事象ではありますが、
私を反面教師にして、うっかりを発生せず、正しいクラウドライフをお送りください。