irisuinwl’s diary

サークル不思議(略)入巣次元の、数学や技術的なことを書きます。

terraformでミスったGCSのバケットを消す

こんにちは。

terraformでGCSのbucketを作って遊んでたら、サービスアカウントのみにしか編集権限をつけなくて自分自身(admin role)がbucketを編集出来なくなる事態になったので解決法をメモろうと思います。

現象

こんな感じのポリシーを作ったらアクセスできないバケットが出来てしまい、terraform apply時のbucket参照できなくて、applyできなくなりました。

resource "google_storage_bucket" "mlops_bucket" {
  name          = var.gcs.bucket_name
  location      = "ASIA-NORTHEAST1"

  uniform_bucket_level_access = true
}

data "google_iam_policy" "admin" {
  binding {
    role = "roles/storage.admin"
    members = [
      "serviceAccount:my-service-account@appspot.gserviceaccount.com",
      // "projectOwner:${var.project_id}", // 本当はこれが必要
      // "projectEditor:${var.project_id}"  // 本当はこれが必要
    ]
  }
}

resource "google_storage_bucket_iam_policy" "policy" {
  bucket = google_storage_bucket.mlops_bucket.name
  policy_data = data.google_iam_policy.admin.policy_data
}

こんな表示がでるよ

$ terraform apply
Error: Error when reading or editing Resource "storage bucket \"b/mlops-storage-example\"" with IAM Policy: Error retrieving IAM policy for storage bucket "b/mlops-storage-example": googleapi: Error 403: **** does not have storage.buckets.getIamPolicy access to the Google Cloud Storage bucket., forbidden

  on gcs.tf line 17, in resource "google_storage_bucket_iam_policy" "policy":
  17: resource "google_storage_bucket_iam_policy" "policy" {

対処

  1. console上でbucketを消す

  2. terraform state上からリソースを消す(なんかこれ消さないと毎回作るっぽい)

irisu@DESKTOP-JTK8J9L:~/mlops-experience/mlflow/terraform$ terraform state rm google_storage_bucket.mlops_bucket
Removed google_storage_bucket.mlops_bucket
Successfully removed 1 resource instance(s).
irisu@DESKTOP-JTK8J9L:~/mlops-experience/mlflow/terraform$ terraform state rm google_storage_bucket_iam_policy.policy
Removed google_storage_bucket_iam_policy.policy
Successfully removed 1 resource instance(s).

これでapplyできた。

おしまい

冬休みの宿題

年末年始時間があるので、やりたいことをまとめる。

 

  • MLOps環境をつくる
  • kedroやhydra入門
  • cloud run or GAEでstreamlitアプリ爆速デプロイ
  • googleのハンズオンでやった内容をまとめる
  • GCP資格試験の勉強(courseraを終わらせる)
  • people AI guidebookにあるツールを使う。例えばfecet, what-if tools
  • 数学: 数学原論でそろそろ幾何の入門する
  • 数学: 統計的学習理論積んでるのでそろそろVC次元はマスターしたい
  • cyberpunk 2077終わらせたい

 

なんか転職して目まぐるしい感じだったけど、せっかくの休みだし、色々と挑戦していきたいねー

WSL2でterraform

最近terraformをキャッチアップしているので、WSLだと、どのようにセットアップするかなどをまとめる。

準備: VS Codeをwslにアクセスする

Remote Developmentを利用する。

MSのドキュメントまんまでできる

docs.microsoft.com

Ctrl+Shift+PしてからRemote-WSLと検索してWSLに接続できる。

準備: gcp sdkをインストール

この記事だと関係ないけど一応

curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-308.0.0-linux-x86_64.tar.gz
tar -zxvf google-cloud-sdk-308.0.0-linux-x86_64.tar.gz
cd google-cloud-sdk
./install.sh
./bin/gcloud init --console-only

terraformのインストール (optional)

公式でバイナリのzipを落としてきて解凍してbinに置けば良い

curl https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_linux_amd64.zip -O terraform_0.13.5_linux_amd64.zip
unzip terraform_0.13.5_linux_amd64.zip
cp terraform /usr/local/bin/

tfenvのインストール

terraformはバージョン依存で前つくったtfファイルが動かないことがあり、バージョン依存回避のためtfenvをインストールすると良いと聞いたので、tfenvを入れる。

公式repoのインストール方法を通りでOK

github.com

git clone https://github.com/tfutils/tfenv.git ~/.tfenv
echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bash_profile
source ~/.bashrc

GKEをtfする

こちらの記事にあるtfファイルを使ってClusterをデプロイします。

qiita.com

terraform init
export TF_VAR_project=$GCP_PROJECT
terraform plan
terraform apply

f:id:irisuinwl:20201101155956p:plain

できた!

sampleアプリをデプロイする

gcloud container clusters get-credentials primary-cluster
kubectl create deployment     hello-app     --image=gcr.io/${GCP_PROJECT}/hello-app:v1
kubectl expose deployment     hello-app     --type="LoadBalancer" --port     8080

これでhttp通信できているか確認する

terraform destroy

f:id:irisuinwl:20201101161514p:plain

消えてる!

おしまい

matrix the coding(行列プログラマー) 4章を読んだ

はじめに

最近、会社のゼミで行列プログラマーを読んでおり、4章を読了したので、感想を記事にする。

行列プログラマーとは、オライリーから出ている線形代数を学びつつpythonでコーディングする本である。

www.oreilly.co.jp

www.amazon.co.jp

書いたコード

4章の演習問題を部分的に問いた。

colab.research.google.com

所感

  • 良い点:

オライリーから出ている本だからコーディングを中心にしているかと思いきや、数学理論の説明が多くて驚いた。
また、応用数学の本として行列を使った興味深い例を挙げていて非常に応用系の本としても面白い。
たとえば、符号理論におけるハミングコードや、ライツアウト、画像変換、グラフの隣接行列と、ユークリッド幾何の合同変換群を行列で表現など、
コンピューターグラフィック、アルゴリズム情報理論に応用できる事例が多くて非常に良いと感じた。

また、演習問題が素晴らしい。
例えば、4章の問題18は行列の積によって、データ間の内積(正規化してないコサイン類似度)によって表現し、
行列を応用することで、簡易なレコメンドアルゴリズムフルスクラッチで実装する。これは本当に良い問題だと思う。

  • 個人的には微妙な点:

本書特有の行列・ベクトルクラスを作成するケースが多い。
確かにpythonの初心者やB1,B2の学生であれば、数値計算クラスの実装として良い問題だと感じる。
しかし、pythonを実務で使っているエンジニアやデータサイエンティストにとって、ライブラリとして既にnumpyや、scipyなど科学計算ライブラリがあるため、
あまり重要に感じない(もちろん大切だと思うが、そういうのって何回も自作した覚えがあって、今更やるのも辛みがすごい…)。

なので、この本の使い方として、個人的には、数値計算ライブラリを自作する部分は、numpy, scipyで対応する箇所を提示、存在しない場合は自作というスタンスが良いように感じる。

4章について

4章は行列についての章である。
以下を学ぶ

  • 行列とは何かから始まり
  • 行列の積、線形写像(本書では線形関数と書いてる)の性質
  • 行列と線形写像(行列の積のモノイドと線形写像の合成の圏が、表現行列を求めることによって関手となり、可逆となること)
  • kernelと線形写像,
  • 逆行列

一番驚いたのは応用数学の本ならば行列のみをやるかと思いきや、線形写像にも言及しており、
さらに、線形写像と行列の本質である同型性、逆行列を行列の線形写像における逆写像の行列と定めていたこと。

なので、逆行列を正方行列だけでなく一般の列数行数についても定めており、正方行列における AB=Eであれば BA=Eとなるが、 一般の矩形行列において、 AB=Eだが BA=Eとならない例もあげている。

また、演習問題4.17.18がマジで素晴らしく、実際にデータを読み込んで、レコメンドエンジン的なものを作るという非常に応用に富んだ例となっていた。

memo: sphinxの調査

なにこれ

sphinxを構築する機会があったので、改めてsphinxを調査した。

sphinxってなに:

ドキュメント生成ツール

どんな事例がある?

www.sphinx-doc.org

github.com

  • elasticsearch-py

elasticsearch-py.readthedocs.io

github.com

docs.python.org

github.com

テーマの設定

デフォルトだとクソダサいので、デザインを変えたい

www.sphinx-doc.org

「世界標準の経営理論」が良い

はじめに

めっちゃ売れてる「世界標準の経営理論」を購入しました。

自分も社会人の端くれ、企業に所属している以上はビジネス書などはつまみ食いします。(ドラッカーコトラー、大学4年間の○○が10時間でわかるシリーズなど)

自分は、売れているビジネス書というと、分かりやすいように書かれている反面、耳障りのいい言葉を言っていて内容が浅いのでは? という勝手に思っており、敬遠している逆張りのオタクなんですが、この本はとても面白いです。

ひとまず経済学ディシプリン経営理論(経済学分野から派生した経営理論)の2部までよみました。

この記事では、自分がこの本は面白いと判断した、序章について語りたいと思います。

続きを読む

wsl2を入れてdockerをインストールする

はじめに

ドライバの関係でOSの更新ができなかったのですが、ついにwindows 10 version 2004にしました。

そのため、Windows Subsystem for Linux 2(WSL2)を入れて、dockerをインストールしたいと思います。

WSL2のインストール

主な手順は以下をそのままやれば良かったです。

docs.microsoft.com

ただ、途中で以下のようなエラーが出ました

> wsl --set-default-version 2
Error: 0x1bc

これは、msのgithubにもissue があり、以下の方法でwsl2 kernelをupdateすればよかったです。

docs.microsoft.com

そして、手順通り、windows storeからubuntuのイメージを手に入れれば完了です。

dockerのインストール

これもめちゃくちゃ簡単で、docker desktopをインストールするだけです。

docs.docker.com

そうすれば、powershellから普通にアクセスできます。

f:id:irisuinwl:20200830010705p:plain

おわり