AIプロダクト開発のための Tips 集。
{機械学習論文調査・前処理/後処理/データセット作成・機械学習モデル開発/機械学習フレームワーク・バックエンド/機械学習基盤(MLOps)・フロントエンド/アプリ開発・特許}などのAIプロダクト開発に関わる幅広い範囲の Tips 集になってます。
入出力処理
- 【シェルスクリプト】フォルダ内のファイル数を確認する。
- 【Python】フォルダ内のファイル一覧を取得する。
- 【Python】2つのフォルダのファイル数&ファイル名の差分を確認する。
- 【シェルスクリプト】ランダムに100個のファイルをサンプリングする。
- 【Python】独自の Python CLI コマンドを作成する(ローカル環境にあるファイルでインストールする場合)
- 【Python】独自の Python CLI コマンドを作成する(PyPI に公開したファイルでインストールする場合)
- 【Golang】cobra を使用して独自の Golang CLI コマンドを使用する
開発環境
サーバー処理一般
- 【シェルスクリプト】ssh 切れ対策のために
nohup
コマンドで実行する。 - 【シェルスクリプト】サーバー間でデータを転送・コピーする。
- 【シェルスクリプト】
curl
コマンドで WebAPI を直接たたく - 【UNIX】サーバー上の画像ファイルをブラウザ上で確認する。
- 【シェルスクリプト】GCP or AWS インスタンスをシェルスクリプト上から停止する。
- 【Python】サーバー上での Python スクリプトをデバッグするときに、ブレークポイントを有効にする。(
import pdb; pdb.set_trace()
) - 【シェルスクリプト】シェルスクリプトで、GoogleDrive から大容量データをコピーする。
- 【Python】スクリプトで GoogleDrive へデータを自動的に転送する。
- 【シェルスクリプト】ポートフォワーディングを使用した tensorboard 接続
- VPN 接続
機械学習論文サーベイ記事
テーブルデータ処理
- 【Python】pandas_profiling でテーブルデータの統計情報を確認する。
- 【Python】pandas データ型に基づき、欠損値の埋め合わせとカテゴリデータのエンコードを一括して行う。
- 【Python】モデルの
feature_importances_
で重要特徴量を確認する。
画像処理
- 【シェルスクリプト】画像ファイルの解像度を確認する。
- 【Python】OpenCV ↔ Pillow ↔ numpy の変換対応
- 【Python】画像の滑らかさを落とさないように拡張子を変更する。
- 【Python】画像やセマンティックセグメンテーション画像の滑らかさを落とさないようにリサイズする。
- 【Python】画像の対象物のアスペクト比を変えないまま adjust する。
- 【Python】画像の対象物全体を膨張・収縮させる。
- 【Python】人物画像の特定の対象物のみを膨張・収縮させる。
- 【Python】データオーギュメンションや品質評価のための画像の拡大縮小&平行移動&回転
- 【Python】セマンティックセグメンテーション画像からラベル値を取得する。
- 【Python】セマンティックセグメンテーション画像の特定のラベル値の部分を抜き取る。
- 【Python】画像のバイナリマスク画像を生成する。
- 【Python】画像の境界輪郭線を滑らかにしたマスク画像を生成する。
- 【Python】画像の背景部分をくり抜く。(グラフ カット)
- remove bg を使用して、画像の背景部分をくり抜く。(グラフ カット)
- 【Python】画像の上下 or 左右対称性を検出する。
- 【Python】品質評価のためのグリッド画像を生成する。
- 【Python】元画像とセグメンテーション画像をアルファブレンディングで重ねて表示する。
- 【Python】画像の特定の対象物が画面端で途切れているかを検出する。
- 【Python】人物パース画像から上着を着ているような人物画像を検出する。
- OpenPose による姿勢推定
- OpenPose のインストール
- 【Python】OpenPose の json ファイルを読み込む。
- 【Python】OpenPose の json ファイルを書き込む。
- 【Python】OpenPose の json ファイルの関節点を画像表示する。
- 【Python】OpenPose の関節点情報に基づき、人物画像を上半身部分でクロップする。
- 【Python】OpenPose の関節点情報に基づき、人物画像が正面を向いているか後ろを向いているか判定する。
- 【Python】OpenPose の関節点情報と人物パース画像に基づき、人物画像が半袖を着ているかを検出する。
- 【Python】OpenPose の関節点情報に基づき、人物セグメンテーション画像に、他の人体部位のラベルを追加する。
- DensePose による姿勢推定
- dlib による顔の landmark 検出
動画処理
- ffmpeg を使用して動画ファイル(mp4)をクロップする
- 【Python】ffmpeg を使用して画像ファイルと音声ファイル(mp3)から動画ファイル(mp4)を作成する
自然言語処理
Web スクレイピング
- 【Python】WEB 上の画像データを収集する。
- 【Python】Selenium を用いてログインが必要な Web ページにログインし、スクレイピングを行う
高速化処理
- 【Python】for ループ内の処理を複数 CPU の並列処理で高速化する。
- 【Python】複数 GPU での並列化のために、フォルダ内のファイルを分割し別フォルダに保存し、その後1つのフォルダに再統合する。
- 【Python】for ではなく行列処理で画像処理を高速化する。
- Cuda
- cupy
- OpenCV (GPU版)
- 【Golang】goroutine と Channel を使用してマルチスレッド処理を行う
PyTorch
- 学習&推論処理
- 【PyTorch】学習用データセットと検証用データセットの分割
- 【PyTorch】学習済みチェックポイント読み込み時に epoch 数や step 数も読み込めるようにする。
- 【PyTorch】k-fold CV での学習処理
- scikit-learn の
KFold
と PyTorch のSubset
の使用
- scikit-learn の
- ネットワーク定義
add_module()
ornn.ModuleList
ornn.ModuleDict
でネットワークの段数を柔軟に可変出来るようにする- 【PyTorch】特定の層のみ学習を行うようにする :
param.requires_grad = False
と optimizer のparams
引数の設定
- 高速化
- 表示処理
- 【PyTorch】tensorboard の画像出力を横軸縦軸に並べて表示する
- 【PyTorch】TensorBoard のヒストグラムにネットワークの重みを表示する。
- データローダー
- 【PyTorch】独自データセットでの DataLoader
- 【PyTorch】複数種類の DA を args 引数でカスタマイズ可能にする
- 【PyTorch】ネットワークへの入力画像が複数存在する場合に入力画像毎に異なる seed 値での DA を適用する
- 【PyTorch】Random Erasing での DA
- 【PyTorch】CutMix での DA
- 【PyTorch】TPS 変換での DA
- その他
- 【PyTorch】OpenCV ↔ Pillow ↔ numpy ↔ Tensor [PyTorch] の変換対応
- 【PyTorch】再現性確保のためのシード値固定処理
- 【PyTorch】GPU での処理時間を計測する :
torch.cuda.Event()
使用する方法
- 【PyTorch】PyTorch を使用した深層学習モデルの実装コード集
- 【PyTorch】PyTorch を使用した強化学習モデルの実装コード集
- 【PyTorch】PyTorch を使用した 3D Reconstruction モデルの実装コード集
Tensorflow
- 【Tensorflow】Dataset API を使用したデータローダー(tensorflow 1.4以降, tensoflow 2.x)
- 【Tensorflow】tensor 値の確認方法(tensorflow 1.x, tensoflow 2.x , tensoflow 2.x)
- 【Tensorflow】tf_debug CLI でのデバッグ処理
- 【Tensorflow】tf_debug GUI でのデバッグ処理
- 【Tensorflow】複数 GPU での学習
- 【Tensorflow】AMP(混合精度)を使用した高速化
- 【Tensorflow】Tensorflow を使用した深層学習モデルの実装コード集
Keras
- 【Keras】独自データセットの DataLoader
- 【Keras】継承クラスで独自のネットワークを定義する
- 【Keras】FineTuning
- 【Keras】複数 GPU での学習
- 【Keras】AMP(混合精度)を使用した高速化
- 【Keras】Keras を使用した Kaggle コンペでの実装コード集
クラウド環境一般
- AWS
- 【AWS】EC インスタンスのディスク容量を後から増設する。
- GCP
- 【シェルスクリプト】GCP に DeepLearning 環境を自動的に構築する。
- 【GCP】GCP ディスクを
gcsfuse
コマンドでマウントする。 - 【GCP】サーバー起動後に自動的に実行するスクリプトを設定する。
- 【GCP】インスタンスグループを利用したオートスケーリング、ロードバランサーの導入
仮想サーバー
- 【AWS】EC2 インスタンス
- 【GCP】VM インスタンス
コンテナ基盤
- Docker
- 【Docker】Docker の基本事項・基本コマンド
- 【Docker】docker コンテナ内で機械学習モデルの処理を実行中に tensorboard で実行結果を確認する。
- 【Docker】コンテナの起動とコンテナ内での python スクリプト実行を一括して行う。
- 【Docker】docker-compose を用いず Docker イメージの作成&コンテナ起動を一括して実行する
- 【Docker】ホスト環境とコンテナ環境で同期したファイルの所有権を指定する。
- 【Docker】docker exec を nohup で実行する。
- 【Docker】本番環境用の Docker イメージと開発環境用の Docker イメージの構成
- 【Docker】dockerfile でユーザー追加後に git clone する際の、permission denied エラー対策
- 【Docker】dockerfile の WORKDIR 変更前のデフォルトパス
- 【Docker】requests モジュールを用いてコンテナ間通信するときの、IP アドレス指定方式(コンテナ名で指定)
- 【Docker】Docker コンテナ内から別の Docker コンテナを認識する
- Kubernetes (k8s)
- 【GCP】GKE [Google Kubernetes Engine]
- 【GCP】Kubernetes (k8s) と GKE [Google Kubernetes Engine] の基本事項
- 【GCP】GKE クラスタのノードで GPU を使用可能にする
- 【GCP】GKE を用いた機械学習モデルの推論 API の構築
- [In-progress]【GCP】GKE でのオートスケールの基礎事項
- 【GCP】Cloud Monitoring でのカスタム指標を k8s の外部メトリックとしてオートスケールする
- 【GCP】Workload Identity を用いた GKE クラスタから GCP リソースへのアクセス
- 【GCP】GKE の外部公開サービスの IP アドレスを固定する
- 【GCP】Pod 間で通信する
- 【GCP】Pod 内のコンテナ間で通信する
- 【GCP】Pod でのコンテナの起動順を設定する
- 【GCP】Pod 内のコンテナ内から別の Pod を認識する
- 【GCP】GKE クラスタをマルチゾーンクラスタにして安定性を向上させる
- 【GCP】GKE クラスタをマルチリージョン&マルチゾーンクラスタにして安定性を向上させる
- 【k8s】Istio の基礎事項
- 【GCP】GKE で構成した Web API に Istio を使用したサーキットブレーカーを導入する
- 【GCP】Istio の VirtualSevice を使用してリクエストデータのヘッダーに応じて異なる Web-API で推論する
- [In-progress]【GCP】GoogleマネージドSSL証明書を用いて、GKE 上の Web-API を https 化する
- 【GCP】k8s の Job を使用する
- 【GCP】k8s の CronJob を使用する
- 【GCP】同期 REST API へのリクエストを k8s のジョブで管理する
- 【GCP】非同期 REST API へのリクエストを k8s のジョブを管理する
- 【GCP】サイドカーで異なるコンテナ間のボリュームを共有する
- 【GCP】k8s の PersistentVolume と hostpath を使用してコンテナ間のボリュームを永続的に共有する
- 【GCP】GKE 上の Web-API に対して Google Cloud Armor の WAF 機能を使用してクライアントIP単位での RateLimit 制限を行う
- 【GCP】 Kustomize を使用して GKE 上の Web-API の k8s のリソース管理を行う
- 【GCP】GKE で Spot インスタンスを使用しコスト削減を行う
- 【AWS】Amazon EKS [Amazon Elastic Kubernetes Service]
- [In-progress]【AWS】
eksctl
コマンドを使用して Amazon EKS 上の Web API を構築する - 【AWS】Spotinst Ocean を使用して AWS の EKS クラスターを低価格&高安定で運用する
- 【AWS】Spotinst Ocean を使用して AWS の EKS クラスターを低価格&高安定で運用する(terraform 使用)
- [In-progress]【AWS】
- 【GCP】GKE [Google Kubernetes Engine]
認証基盤
- 認証認可の基礎事項
- 認証(Authentication)
- 認可(Authorization)
- Basic認証
- JWT認証
- OAuth
- OpenID Connect
- SAML (Security Assertion Markup Language)
- SSO [Single Sign-On]
- CORS [Cross-Origin Resource Sharing]
- 【GCP】GCP の認証システム
- 【AWS】AWS の認証システム
Web サーバー / WSGI サーバー / ロードバランサー / API Gateway
- Web サーバー / WSGI サーバー
- Web サーバーの基礎事項
- nginx
- WSGI/ uWSGI
- Gunicorn
- ロードバランサー
- 【AWS】ALB [Application Load Balancer]
- 【AWS】AWS Load Balancer Controller / AWS ALB Ingress Controller
- API Gateway
- 【AWS】Amazon API Gateway
- 【AWS】Amazon API Gateway を使用して Lambda 関数での REST API を構築する(Amazon CLI 使用)
- 【AWS】Amazon API Gateway を使用して EC2 インスタンス上の REST API を構築する(Amazon CLI 使用)
- Ambassador
- 【AWS】Amazon API Gateway
- DNS サーバー
- DNS サーバーの基礎事項
- 【AWS】Route53
- 【GCP】Cloud DNS
Web フレームワーク
- REST API / RESTful API
- 【Python】Flask
- 【Python】GCP インスタンス + docker + Flask を用いた Web-API の構築
- 【Python】Flask での Web-API を https 化する(自己署名SSL認証を使用する場合)
- 【Python】Flask での Web-API を https 化(SSL)する(認証局[CA]を使用する場合)
- 【Python】Django
- 【Python】FastAPI
- FastAPI の基本事項
- FastAPI + uvicorn での構成
- FastAPI + uvicorn + gunicorn での構成(本番環境想定時)
- FastAPI + uvicorn + gunicorn + docker を用いた Web-API の構築
- FastAPI での GET / POST 処理(FastAPI + uvicorn + gunicorn + docker での構成)
- FastAPI を使用した Web-API にファイルをアップロードする
- FastAPI を使用した Web-API に複数ファイルを同時にアップロードする
- FastAPI を使用した Web-API からファイルをダウンロードする
- FastAPI での非同期処理(FastAPI + uvicorn + gunicorn + docker での構成)
- FastAPI を使用した非同期処理での Web-API の構築(FastAPI + uvicorn + gunicorn + redis + バッチサーバー + docker での構成で画像データを扱うケース)
- FastAPI を使用した非同期処理での Web-API の構築(FastAPI + uvicorn + gunicorn + redis + バッチサーバー + docker での構成で動画データを扱うケース)
- FastAPI を使用した非同期処理での機械学習モデル推論 API の構築(FastAPI + uvicorn + gunicorn + redis + バッチサーバー + docker での構成)
- FastAPI を使用した複数の同期処理での Web-API を並列処理する(FastAPI + uvicorn + gunicorn + docker + docker-compose での構成)
- 推論時間が異なる複数の API から構成される Web-API において、推論結果を複数段階に分けてレスポンスする(FastAPI + uvicorn + gunicorn + docker + docker-compose での構成)
- FastAPI を使用した非同期処理での Web-API の出力結果を GSC に転送する
- FastAPI を使用した非同期処理での Web-API の出力結果を GoogleDrive に転送する
- FastAPI を使用した非同期処理での Web-API の出力完了結果を Slack に通知する
- 【Python】httpx を用いて複数の Web-API に並列実行でリクエストする
- 【Golang】net/http(標準ライブラリ)
- 【Golang】net/http を使用して GET リクエストに対しての簡単な REST API を作成する
- net/http を使用して POST リクエストに対しての簡単な REST API を作成する
- 【Golang】Gin
- 【Elixir】Phoenix
サーバレス / FaaS [Function as a Service]
- 【GCP】Cloud Functions
- 【GCP】Cloud Functions を利用したサーバーレス Web-API の構築
- 【GCP】Cloud Functions の単体テスト&結合テスト
- 【GCP】Cloud Functions で GPU を使用可能にする
- 【GCP】Cloud Functions を用いた機械学習モデルの推論 API の構築
- 【GCP】Cloud Run
- 【GCP】Cloud Run を利用したサーバーレス Web-API の構築
- 【GCP】Cloud Run で GPU を使用可能にする
- 【GCP】Cloud Run を用いた機械学習モデルの推論 API の構築
- 【AWS】AWS Lambda
- 【AWS】AWS Step Functions
データ基盤 / データ分析基盤
- 非構造化データ
- 【GCP】GCS [Google Cloud Storage]
- 【AWS】Amazon S3
- 構造化データとSQL
- 構造化データの基礎事項
- セッションとトランザクション
- コネクションプールとコネクション数
- リレーション
- インデックス
- 正規化
- CRUD操作
- マイグレーション
- パフォーマンス指標
- MySQL
- 【MySQL】SQLAlchemy を使用して Python スクリプトから MySQL に接続する
- 【MySQL】SQLAlchemy を使用して Python スクリプトから MySQL に接続する(docker + docker-compose での構成)
- 【MySQL】MySQL に Web-API のログデータを書き込む(FastAPI + uvicorn + gunicorn + MySQL + SQLAlchemy + docker + docker-compose での構成)
- 【MySQL】MySQL に書き込んだ Web-API のログデータを監視する(FastAPI + uvicorn + gunicorn + MySQL + SQLAlchemy + docker + docker-compose での構成)
- [In-progress]【MySQL】MySQL に保存したジョブデータをバッチ単位で処理する Web-API(FastAPI + uvicorn + gunicorn + MySQL + SQLAlchemy + docker + docker-compose での構成)
- PostgreSQL
- PostgreSQL CLI を使用して PostgreSQL データベースの CRUD 処理を行う
- PostgreSQL CLI を使用して PostgreSQL データベースの CRUD 処理を行う(docker 使用)
- alembic を使用して PostgreSQL データベースの DB マイグレーションを行う
- [In-progress]【Elixir】Ecto の Ecto.Repo を使用して PostgreSQL データベースの CRUD 処理を行う
- [In-progress]【Elixir】Ecto の Ecto.Schema で定義したテーブルデータの内容を PostgreSQL データベースのテーブルに追加する
- 【Elixir】Phoenix 版 Ecto の Ecto.Repo を使用して PostgreSQL データベースの CRUD 処理を行う
- 【Elixir】Phoenix 版 Ecto の Ecto.Schema で定義したテーブルデータの内容を PostgreSQL データベースのテーブルに追加する
- 【Elixir】Phoenix 版 Ecto の Ecto.Changeset を使用して PosgreSQL DB のテーブルデータの一部の列のみを変更する
- 【Elixir】Phoenix 版 Ecto の Ecto.Query を使用して PosgreSQL DB のテーブルデータを取り出す
- 【Elixir】Phoenix 版 Ecto の Ecto.Multi を使用して PosgreSQL DB に対しての複数のデータベース処理を1つのトランザクションで行う
- 【GCP】Google Cloud SQL
- 【GCP】Google Cloud SQL の基礎事項
- 【GCP】Google Cloud SQL を使用して SQL インスタンス上の MySQL データベースの CRUD 処理を行う
- 【GCP】Google Cloud SQL を使用して MySQL に Web-API のログデータを書き込む(FastAPI + uvicorn + gunicorn + MySQL + docker + docker-compose での構成)
- 【GCP】BigQuery
- 【GCP】BigQuery の基礎事項
- 【GCP】BigQuery を使用したデータ処理(GUI使用時)
- 【GCP】BigQuery を使用したデータ処理(CLI使用時)
- 【GCP】BigQuery を使用したデータ処理(Python 用 BigQuery Storage API ライブラリ使用時)
- 【AWS】Amazon Aurora
- 構造化データの基礎事項
- 構造化データ(NoSQL)
- 【AWS】Amazon DynamoDB
- NAS [Network Attached Storage] / NFS [Network File System]
- 【AWS】Amazon EFS
メッセージングサービス / キューサービス / キャッシュサービス
- メッセージングサービス・キューサービスの基本事項
- Redis
- Redis の基礎事項
- Redis を Python スクリプトで使用する
- docker + Redis + Python での Redis の構成
- docker + Flask での Web-API を Redis を利用して非同期実行する
- 推論結果を Redis にキャッシュし、同じ入力データでの Web-API の推論処理を高速化する(FastAPI + uvicorn + gunicorn + redis + docker + docker-compose での構成)
- 入力データや前処理データを Redis にキャッシュし、同じ入力データでの Web-API の推論処理を高速化する(FastAPI + uvicorn + gunicorn + redis + docker + docker-compose での構成)
- 【GCP】Google Cloud Pub/Sub
- 【GCP】Google Cloud Pub/Sub の基礎事項
- 【GCP】Google Cloud Pub/Sub を Python スクリプト上で利用する(PULL 方式)
- 【GCP】Google Cloud Pub/Sub を Python スクリプト上で利用する(PUSH 方式)
- 【GCP】Cloud Scheduler と Google Pub/Sub を用いて、サーバーを一定の時間間隔で起動・停止する。
- [In-progress] docker + Flask での Web-API を Cloud Pub/Sub を利用して非同期実行する(PULL方式)
- 機械学習モデルの推論 API を Cloud Pub/Sub を利用して非同期実行する(PULL方式)
- 【AWS】Amazon SQS
- 【AWS】Amazon ElastiCache
ロギング / モニタリング
- 【Python】デコレーターを用いてロギング処理を共通化する
- サーバーのロギング / モニタリング
- 【GCP】Cloud logging(旧 Stackdriver)
- 【GCP】Cloud Monitoring(旧 Stackdriver Monitoring)にカスタム指標を書き込む(FastAPI + uvicorn + gunicorn + redis + バッチサーバー + モニタリングサーバー + docker での構成)
- Datadog
- 【Datadog】Datadog の基礎事項
- 【Datadog】GCE の各種メトリクスとログデータを Datadog で表示する
- 【Datadog】GCE 上の Web-API の各種ログを Datadog で表示する
- 【Datadog】GKE 上の Web-API の各種ログを Datadog で表示する
- 【Datadog】アプリの各種ログを Datadog で表示する
- Sentry
- Grafana
- OpsGenie
- ログフォワーダ
- Fluentd (td-agent) を使用してログデータを転送する
- Fluentd を使用して Web-API からのログデータを転送する(FastAPI + uvicorn + gunicorn + Fluentd + docker + docker-compose での構成)
- Fluentd を使用して GCE 上の Web-API でのログデータを Cloud logging に転送する(FastAPI + uvicorn + gunicorn + Fluentd + docker + GKE での構成)
- Fluentd を使用して GKE 上の Web-API でのログデータを Cloud logging に転送する(FastAPI + uvicorn + gunicorn + Fluentd + docker + GKE での構成)
- [In-progress] Fluentd を使用して機械学習 API のログデータを転送する(FastAPI + uvicorn + gunicorn + Fluentd + docker + docker-compose での構成)
- Fluentd を使用して Python スクリプトからログ集約する
品質テスト / 負荷テスト
- 単体テスト
- 負荷テスト
- 機械学習 API サーバーの負荷テストの基礎事項
- GKE で構成した Web API に vegeta atteck を使用して負荷テストする
- GKE で構成した機械学習 API に vegeta atteck を使用して負荷テストする
- Istio の VirtualSevice のトラフィックミラーリング機能を使用して Web-API のシャドウA/Bテストを行う
- Istio の VirtualSevice のトラフィック分割機能を使用して、Web-API のオンラインA/Bテストを行う
ジョブ管理 / バッチ処理
- SLURM
- [In-progress] SLURM の基礎事項
- SLURM をインストールする
- SLURM を使用して学習ジョブの予約&実行を行う
- SLURM を使用して複数サーバーでの分散学習を行う
- 【AWS】AWS Batch
- 【AWS】 AWS Batch を使用して EC2 インスタンス上で簡単なバッチ処理を行う(AWS CLI 使用)
- 【AWS】 AWS Batch を使用して EC2 インスタンス上で簡単なバッチ処理を行う(terraform 使用)
機械学習ワークフロー / 機械学習パイプライン
- 【Apahe】Apahe Airflow
- 【GCP】CloudComposer
- 【GCP】CloudComposer の基礎事項
- 【GCP】CloudComposer v1 を使用して簡単なワークフローを構成する
- 【GCP】CloudComposer v2 を使用して簡単なワークフローを構成する
- Luigi / gokart
- Luigi を使用して複雑な処理を行う API のパイプラインを管理する
- Kedro
- MLflow
- 【AWS】Amazon SageMaker
- 【GCP】Kubeflow
- 【GCP】Vertex AI
- 【GCP】Vertex AI の基礎事項
- 【GCP】Vertex Pipelines を使用して機械学習パイプラインを構築する
- 【GCP】Vertex Pipelines を使用して独自のパイプラインコンポーネントでの機械学習パイプラインを構築する
インフラのコード化 / Infrastructure as Code
- Terraform
- Terraform の基礎事項
- Terraform を利用して Amazon IAM を構築する
- Terraform を利用して AWS インスタンスを構築する
- Terraform を利用して AWS インスタンスを構築する(docker 使用時)
- Terraform を利用して Amazon EKS クラスターを構築する(docker 使用時)
- Terraform を利用して Amazon EKS クラスターを構築する(定義済み module + docker 使用時)
- Terraform を利用して GCP インスタンスを構築する。
- Terraform を利用して機械学習環境の GCP インスタンスを自動的に構築する。
- 【GCP】DeploymentManager
- 【GCP】DeploymentManager の基礎事項
- 【AWS】CloudFormation
CI/CD
- CI/CD の基礎事項
- GitHub Actions
- GitHub Actions を用いた CI/CD
- GitHub Actions を用いて機械学習の推論APIの CI/CD を行う
- [In-progress] GitHub Actions と Terraform を使用して EC2 インスタンスの CI/CD を行う
- GitHub Actions, Terraform, ArgoCD を使用して GKE 上の Web-API の CI/CD を行う
- CircleCI
- 【GCP】Cloud Build
- ArgoCD
外部APIサービス・外部プラットフォームサービス
Web アプリ開発
- HTML
- Google タグマネージャー(GMT)
- CSS
- JavaScript / TypeScript
- UI フレームワーク
- jQuery
- Vue.js / Nuxt.js
- [In-progress]【Vue.js】Vue.js の基礎事項
- 【Vue.js】CDN 版(スタンドアロン版)の Vue.js を使用する
- 【Vue.js】Vue.js スクリプトの基本的な書き方(CDN 版での構成)
- 【Vue.js】vue-cli を用いて Vue.js アプリをデプロイする
- 【Vue.js】v-html 属性を使用して
{{}}
を HTML の要素(タグ)として認識させる(CDN 版での構成) - 【Vue.js】v-bind 属性を使用して HTML タグの属性に値を設定する(CDN 版での構成)
- 【Vue.js】v-if 属性を使用して条件付きでレンダリングする(CDN 版での構成)
- 【Vue.js】v-for 属性を使用してオブジェクトのプロパティを順にレンダリングする(CDN 版での構成)
- 【Vue.js】コンポーネントの基本的な書き方(CDN 版での構成)
- [In-progress]【Vue.js】コンポーネントで v 属性を利用する(CDN 版での構成)
- 【Vue.js】コンポーネントでイベント処理する(CDN 版での構成)
- 【Vue.js】Bootstrap(CSSのフレームワーク)を Vue.js アプリケーション内で使用する(CDN 版での構成)
- React / Next.js
- [In-progress]【React】React の基礎事項
- 【React】CDN 版(スタンドアロン版)の React を使用する
- 【React】Creat React App を用いて React アプリをデプロイする
- 【React】JSX を用いて階層構造のタグを表示する(CDN 版での構成)
- 【React】JSX に変数値を埋め込む(CDN 版での構成)
- 【React】JSX で HTML 属性に変数値を設定する(CDN 版での構成)
- 【React】関数コンポーネントを使用する(CDN 版での構成)
- 【React】クラスコンポーネントを使用する(CDN 版での構成)
- 【React】クラスコンポーネントでステートを使用する(CDN 版での構成)
- 【React】クラスコンポーネントでイベントを割り当てる(CDN 版での構成)
- 【React】クラスコンポーネントでコンテキストを使用する(CDN 版での構成)
- [In-progress]【React】React で Material-UI のコンポーネントを使用する(TypeScript 使用)
- 【React】React で Material-UI のテンプレートを使用する(TypeScript 使用)
- 【React】React でレスポンシブデザインを行う
- 【React】Redux を使用して値の状態管理を行う
- 【React】Redux Persist で React アプリのデータを永続化する
- 【React】React Hooks のステートフックを使用して値の状態管理を行う
- 【React】React Hooks のステートフックを使用して配列の状態管理を行う
- 【React】React Hooks で副作用フックを使用する
- 【React】React Hooks で独自フックを使用する
- 【React】React Hooks でステートフックを永続化する
- 【React】useRef を使用して DOM 要素を設定する
- 【React】useRef を使用して自動スクロールを行う
- 【React】useRef を再描画を行わないコンポーネント内変数として利用する
- 【React】forwardRef を使用して子コンポーネントの DOM 要素に useRef で作成した ref オブジェクトを渡す
- 【React】useImperativeHandle を使用して親コンポーネントから子コンポーネントで定義したメソッドを呼び出す
- 【React】React Router で複数ページの React アプリを作成する
- [In-progress]【React】Next.js を使用してサーバーサイドレンダリング(SSR)する
- [In-progress]【React】Next.js で Redux を使用して値の状態管理を行う
- [In-progress]【React】Next.js アプリでレイアウトを関数コンポーネントで行う
- 【React】React + Redux アプリで Firebase の Realtime Database を利用する
- 【React】Next.js + React Hooks アプリで Firebase の Firestore Database を利用する
- 【React】Next.js + React Hooks アプリで Firestore Database の基本的なデータベース操作を行う
- [In-progress]【React】Next.js + React Hooks アプリで Firebase Authentication でのユーザー認証を利用する
- 【React】react-beautiful-dnd を使用してドラック&ドロップ処理を行う
- 【React】react-infinite-scroller を使用して無限スクロールを行う
- 【React】html2canvas を使用して React アプリでスクリーンショット画像を出力する
- 【React】window.requestAnimationFrame を使用してアニメーションを行う
- 【React】GSAP を使用して React アプリで CSS アニメーションを行う
- 【React】Sentry を使用して React アプリのエラーを監視する
- 【React】React と Redux を使用して簡単なウェブアプリを作成する
- 【React】React と React Hooks を使用して簡単なウェブアプリを作成する
- 【React】Next.js と React Hooks と Firebase を使用して簡単なウェブアプリを作成する
- 【React】React を使用して http 通信での WebAPI からの出力を返す GUI 付きウェブアプリを作成する
- 【React】React アプリから Twitter API を使用する
- 【React】React アプリから Youtube Data API / YouTube Live Streaming API を使用する
- 【React】React アプリから IFrame Player API を使用する
- 【React】React を使用した Web アプリの実装コード集
- Firebase
- 【Firebase】Firebase Hosting を使用して静的なウェブサイトをデプロイする
- 【Firebase】Firebase Cloud Function を使用して動的なウェブアプリをデプロイする
- 【Firebase】Firebase Authentication を使用してウェブアプリに Authentication 機能を導入する
- [In-progress]【Firebase】Cloud Storage for Firebase を使用してウェブアプリ上で使用する画像データを表示する
- [In-progress]【Firebase】Firebase Hosting を使用して GKE 上の https 通信での WebAPI からの出力を返す GUI 付きウェブアプリを作成する
- 【Firebase】Firebase Hosting と Firebase Cloud Function を使用して GKE 上の http 通信での WebAPI からの出力を返す GUI 付きウェブアプリを作成する(リバースプロキシとしての firebase cloud function 経由で API を呼び出す)
- 【Firebase】Firestore Security Rules の設定
- Netlify
- Streamlit
iOS アプリ開発
- iOS アプリ開発の基本事項
- Swift
- Firebase
- 【Firebase】iOS アプリ(Xcodeプロジェクト)に Firebase を登録する
- 【Firebase】iOS アプリから Firebase Cloud Functions を利用する
- 【Firebase】Firebase Authentication を使用して iOS アプリに Authentication 機能を導入する
- 【Firebase】Firebase Hosting と Firebase Cloud Function を使用して GKE 上の http 通信での WebAPI からの出力を返す iOS アプリを作成する(リバースプロキシとしての firebase cloud function 経由で API を呼び出す)
アンドロイドアプリ開発
- Kotlin
クロスプラットホームアプリ開発
- Dart 言語
- UI フレームワーク
- Flutter
- 【Flutter】Flutter を使用して Web アプリの Hello World を行う
- 【Flutter】
pubspec.yml
でパッケージ管理(ライブラリ管理)を行う - 【Flutter(外部サイト)】StatefulWidget のライフサイクル
- 【Flutter】StatefulWidget を使用して値の状態管理を行う
- 【Flutter】Provider を使用して値の状態管理を行う
- 【Flutter】ChangeNotifierProvider を使用して値の状態管理を行う
- 【Flutter】Stream, StreamBuilder, BLoCデザインパターンを使用して動的に Widget を更新する
- 【Flutter】Container を使用して HTML での div 要素のようにアプリ画面の領域を指定する
- 【Flutter】ListView の
ListView(...)
を使用して固定リスト長のリストレイアウトを行う - 【Flutter】ListView の
ListView.builder(...)
を使用して可変リスト長のリストレイアウトを行う - 【Flutter】GridView の
GridView.builder(...)
を使用して可変グリッド数のグリッドレイアウトを行う - 【Flutter】BottomNavigationBar を使用してフッターを作成する
- 【Flutter】ポートレートモード(縦向き)でのレスポンシブデザインを行う
- 【Flutter】ポートレートモード(縦向き)とランドスケープモード(横向き)双方でのレスポンシブデザインを行う
- 【Flutter】Navigator の
pop()
,push()
メソッドを使用して画面のページ遷移を行う - 【Flutter】Navigator の
popNamed()
,pushNamed()
メソッドを使用して画面のページ遷移を行う - 【Flutter】ScrollController を使用してスクロール位置を指定した位置に動かす
- 【Flutter】Google Font を使用する
- 【Flutter】Animated 系 Widget を使用してアニメーションを行う
- 【Flutter】AnimationController を使用してアニメーションを行う
- 【Flutter】Tween を使用してアニメーションを行う
- 【Flutter】Transition 系 Widget を使用してアニメーションを行う
- 【Flutter】Transition 系 Widget を使用して画面のページ遷移時のアニメーションを行う
- 【Flutter】SliverAppBar を使用してスクロール時に大きさが変わるヘッダーを作成する
- 【Flutter】独自のフッターを作成する
- 【Flutter】スクロール時に大きさが変わる独自のフッターを作成する
- 【Flutter】Flutter アプリから Firebase Authentication でのユーザー認証を利用する
- 【Flutter】Flutter アプリから Firestore Database を使用する。
- 【Flutter】Flutter アプリから Firebase Cloud Storage を使用する。
- 【Flutter】Flutter アプリから Firebase Cloud Function を使用する。
- 【Flutter】Flutter Web アプリから Firebase Hosting を使用する。
- 【Flutter】Sentry を使用して Flutter アプリのエラーを監視する
- 【Flutter】Flutter アプリから非同期 API を使用する
- 【Flutter】Flutter アプリから Twitter API を使用する
- 【Flutter】Flutter アプリから Youtube Data API / YouTube Live Streaming API を使用する
- 【Flutter】Flutter アプリから IFrame Player API を使用する
- React Native
- Flutter
サーバサイド
- Node.js
サーバレス / FaaS [Function as a Service]
- Firebase
- 【Firebase】Firebase の基礎事項
- 【Firebase】Firebase Cloud Function を JavaScript(
Node.js
) ではなく Google Cloud Function で登録した Python スクリプトで登録する - https 通信での Web サイトからリバースプロキシとしての Firebase Cloud Function 経由で http 通信での Web-API を呼び出す
ロギング / モニタリング
- Google Analytics
- Sentry
UI デザイン / UX デザイン
- UI デザイン / UX デザイン
- UI デザインの基礎事項
- Figma
- 【Figma】Figma で Material-UI の UI を使用する
LLM アプリケーション開発
-
OpenAI API
-
Azure の LLM 系サービス
- Azure OpenAI Service
- Prompt flow(旧 Azure Machine Learning Prompt flow)
- Prompt flow の概要
- Prompt flow の基本的な使い方
- Prompt flow を使用してプロンプトチューニングを行う
- Prompt flow をデプロイして、アプリケーションから API として利用できるようにする
- Prompt flow CLI/SDK を使用して Prompt flow の実行を行う
- Prompt flow CLI/SDK を使用して Prompt flow の CI/CD を行う
-
LangChain
- LangChain の概要
- LangChain Model I/O
- LangChain Data connection
- LangChain Memory
- LangChain Agents
- LangSmith
- Dify
- Dify の概要
- Dify の基本的な使い方(テンプレートを使用した LLM アプリケーションを作成する)
- Dify の基本的な使い方(ワークフローを使用した LLM アプリケーションを作成する)
- Dify を使用して RAG を使用した LLM アプリケーションを作成する
- Dify を使用した LLM アプリケーションを Web アプリとして外部公開する
- Dify を使用した LLM アプリケーションを API として外部公開する
- [In-progress] Dify を使用した LLM アプリケーションを Web サイトへの埋め込みとして外部公開する
- Dify をローカル環境(オンプレ環境)で起動する
-
Hugging Face
- Hugging Face の概要
- 【CLI/Python】Hugging Face Hub の基本的な使用方法
- 【Python】Hugging Face Transformers を使用して NLP モデルの推論処理を行う
- 【Python】Hugging Face Spaces を利用して簡単な機械学習デモアプリを構築する
- 【Python】Hugging Face の LLM モデルを LangChain で使用する
-
Claude
xxx
- xxx
xxx
- xxx