irisuinwl’s diary

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

CPython Internalsが良い

こんにちは、いりすです。最近youtubeバ美肉配信にハマってます

 

今回は最近読んでいるCPython Internalsについて紹介します。

 

CPython InternalsはReal Pythonというコミュニティから出た本で、CPython 3.9の実装を概念、コードリーディング、コードの改変を通して解説していく本となっております。

realpython.com

 

自分でまとめたnotionは以下となります

ついでですが、自分が読書配信した再生リストです:

www.youtube.com

 

本記事ではCPython Internalsを読んでみた感想を紹介します。

 

続きを読む

バ美肉配信者になりました

こんにちは。

最近、バ美肉してyoutubeで配信を始めました。

www.youtube.com

 

image.png

 

やってる内容はコーディングしたり、本読んでまとめたり、ゲームをしたりです。

具体的な手順は別に解説しようと思いますが、今回はモチベーションや、やってみた感触について書きたいと思います。

 

モチベーション:

  • 単純に美少女になりたかった
  • 最近アウトプットの機会が減っていて学習モチベーションが低かった
  • 発話する機会が減っていて、発話によるコミュニケーション能力が落ちていると感じた
  • 記事やテキストだとインプットをアウトプットにする時間がかかるので、ライブコーディングすることでインプットを即アウトプットとすることで、その処理時間を削減したかった。

 

雑なまとめをすると新しいことをしたかったのでしたって感じです

続いてやってみた感想です。

  • 日ごろから声を出さないので、声を出す練習になる
  • 音響が聞き取りやすく調整するのがむずい
  • そもそも聞き取りやすさって声質の問題がでかいなって結論に到達する
  • 3Dモデルを知人に作ってもらったが、VRMモデルに合うようにhumanoidを作る調整がむずい(Unityが使える3Dモデラーじゃないときつそうに思った)
  • 学習の過程を配信することで、モチベーションにつながる
  • インプットをそのままアウトプットにできる(アウトプットとしての質は低いと思う)
  • 学習計画を配信につなげようという思考ができる(この分野を勉強する配信したら面白そうだよなぁなど)
  • 世の中のVTuberの人たちほんとすごいと感じる

以下は配信の際に工夫したメモ:

  • バ美肉ソフトウェア: luppetを使ってカメラによるフェイストラッキングと、leapによるハンドトラッキングをしてます
  • 3Dモデル作成 : blender -> unityからVRMに変換
  • 配信ソフト: みんな大好きOBS
  • ヘッドセットの音質が悪いので指向性カージオイドのマイクを買った
  • 音声エフェクト: OBSについてるノイキャンが優秀すぎる。あと声が小さいのでゲインとかコンプレッサーとか閾値を入れていい感じにした
  • 配信素材: OKUMONOが良き
  • 背景: 

    sozaino.site

  • 吹き出し素材

    sozaino.site

  • フォント: フロップデザインフォントがライセンス的にもデザイン的にも好きだったので導入

    www.flopdesign.com

 

まあ、そんな感じです。

じゃあねー

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

できた!

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

消えてる!

おしまい

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