肉球でキーボード

MLエンジニアの技術ブログです

データエンジニアリングの基礎を読みました

「データエンジニアリングの基礎」を読んだので、感想・各章の内容についてまとめます www.oreilly.co.jp 全体を通しての感想 原本は Fundamentals of Data Engineering で本書は日本語訳となります。 筆者のJoe Reis氏とMatt Housley氏はデータエンジニアリ…

ワークフローオーケストレーションの歴史

Data Engineering Study #23 Data orchestration 特集の発表「ワークフローオーケストレーション入門」から、ワークフローオーケストレーションの歴史について記事にまとめました。 概要 近年データエンジニアリングの周辺技術が話題に上がるようになり、ワ…

入門 考える技術・書く技術を読みました

「入門 考える技術・書く技術」の読書メモ www.diamond.co.jp 全体を通しての感想 バーバラ・ミント氏著のピラミッド原則をまとめた「考える技術・書く技術」に対する、「日本人による日本人のための実践ガイド」とまえがきで述べられています。 全168Pと文…

pyenv-virtualenv initでプロンプト表示速度が低下する問題

問題 ~/.zshrcに記述した eval "$(pyenv virtualenv-init -)" によって、zshのプロンプト表示が遅くなってることに気づきました。 原因と解決方法を調べたのでまとめました。 結論 ~/.zshrcに記述するのを eval "$(pyenv virtualenv-init -)" ↓ eval "$(pyen…

ターミナルをiTerm2からAlacrittyに変更した

ターミナルをiTerm2からAlacrittyに変えたので、Alacrittyの設定方法について紹介します。 Alacrittyとは Rust製のターミナルエミュレーターです。 公式READMEでは以下のように特徴を説明しています。 高速に動作 configファイルで柔軟にカスタマイズ可能 BD…

PrefectワークフローをKubernetes Jobで実行する

この記事は MLOps Advent Calendar 2023の20日目の投稿記事です。 PrefectワークフローをKubernetes Jobで実行する方法を紹介します。 本文中コード: code-for-blogpost/prefect_gke at main · nsakki55/code-for-blogpost · GitHub Prefect × Kubernetes Pr…

Prefect WorkerをKubernetesにデプロイする

Prefect 2.10以降、インフラ管理の方法はAgentが非推奨となりWorkerが推奨となりました。 PrefectのWorkerについてのまとめ、KubernetesにWorkerをデプロイする場合のmanifestを紹介します。 本文中コード: code-for-blogpost/prefect_kubernetes_worker at …

プロダクトマネージャーのしごとを読みました

「プロダクトマネージャーのしごと」を読んだので、メモをかねて各章の感想を書きます。 www.oreilly.co.jp 全体を通しての感想 原本は Product Management in Practice, 2nd Edition で本書は日本語訳となります。 本書が出版された時にプロダクトマネージ…

機械学習システムデザインを読みました

「機械学習システムデザイン」を読んだので、感想・各章の内容についてまとめます www.oreilly.co.jp 全体を通しての感想 原本は Designing Machine Learning Systems で本書は日本語訳版となります。 原本の著者である Chip Huyen氏が書籍に関する情報をま…

HHKBキーボードの修理サポートが最高だった

自分はキーボードに HHKB を愛用しています。プライベートでも仕事でも HHKB キーボードを使用していて、毎日 HHKB キーボードを使っています。 今回、動作異常が発生したので製造元の PFU に修理対応をしてもらったところ、サポートが最高だったので感謝の…

パケットをゼロから自作してPythonのsocket通信で送る

ゼロから自作したパケットをpythonのsocket通信を用いてサーバーに送信します。 SYNフラグのパケットをサーバーに送り、SYN, ACKフラグのパケットが返ってくるところまで確認します。 実行環境 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20…

Pythonメモリプロファイルツールmemrayを使う

Pythonのメモリプロファイルを行うためにmemrayを使用したところ、インストールからプロファイル実行まで手軽にでき、レポート方法が豊富で使い勝手が良かったので使用方法を紹介します。 本文中コード:code-for-blogpost/memray at main · nsakki55/code-f…

GitHub ActionsでPrefectのdeploymentを一括登録する

概要 Prefectを本番運用する場合、Flowの実行設定であるDeploymentをPrefect Cloudに登録する必要があります。 Prefectでワークフローを運用する場合、FlowとDeploymentをGitHubレポジトリでコード管理するケースが多いと思います。 この記事では、レポジト…

PrefectでSub Flowごとに実行環境を分ける方法

概要 PrefectではFlow内部で別のFlowを実行する、Sub Flowという概念があります。 Flows - Prefect Docs 例えばMLの学習パイプラインを 学習データの取得 前処理 学習 のように処理に分ける場合、各処理を1つのFlowとしてグループ化できます。 Sub Flowを呼…

PrefectのFlow実行名を変更する

PrefectでFlow実行名を変更する方法を紹介します。 本文中コード: code-for-blogpost/prefect_rename_flow at main · nsakki55/code-for-blogpost · GitHub flow実行名の変更について PrefectのFlow実行名は、デフォルトではランダムに名前が割り当てられま…

pythonパッケージ管理ツールryeを使う

Pythonパッケージ管理ツール ryeの使い勝手がよかったので使用方法をまとめました。 ryeとは GitHub: https://github.com/mitsuhiko/rye flaskの作者である Armin Ronacher氏 (GitHubアカウント @mitsuhiko)が個人利用目的で作成した、Pythonのパッケージ関…

Prefect FlowをECS Taskで実行する方法

概要 PrefectではInfrastructure blockにECS Task Blockを指定することで、FlowをECS Taskで実行することができます。 本記事では、FlowをECS Taskで実行する2パターンの手順を紹介します。 本文中コード: https://github.com/nsakki55/prefect-ecs-task-flo…

Prefect 2.0に入門する

本文中のコード github.com Prefect 2.0 2022年7月にPrefect 2.0が正式リリースされました。 Prefect1.0のサポートが2023年5月1日に終了するため、Prefect 2.0への移行が必須となっています。 Prefect 1.0から2.0に移行するメリットは次のmediumの記事が参考…

MLOps論文 Machine Learning Operations (MLOps): Overview, Definition, and Architecture の要点まとめ

MLOpsを体系的にまとめた論文「Machine Learning Operations (MLOps): Overview, Definition, and Architecture」を読んだので、要点をまとめました。 元論文:https://arxiv.org/abs/2205.02302 TL;DR 「MLOpsって何?」に答えた論文 MLOpsに関わる文献調査…

SageMaker Endpointのレイテンシー高速化実験

SageMaker推論高速化のTIPS サービスの中でMLによるリアルタイム推論を行う場合、レイテンシーは重要な指標となります。 SageMakerによるリアルタイム推論の導入を検討してる場合、レイテンシーがサービス要件に合うかは気にする場合が多いと思います。 本記…

AWS PrivateLinkを介したSageMaker Endpointへのリクエスト手順

PrivateLinkによる低レイテンシー推論 SageMaker 公式ドキュメントで、SageMaker Endpointの低レイテンシー推論のベストプラクティスとして、PrivateLinkの利用が紹介されています。 低レイテンシーのリアルタイム推論AWS PrivateLink - Amazon SageMaker リ…

SageMaker Endpointのレイテンシーを負荷試験ツールlocustで計測する

この記事はMLOps Advent Calendar 2022にリンクしてます。 SageMaker Endpointのレイテンシーを、負荷試験ツールLocustで計測してみました。 本文中のコード: https://github.com/nsakki55/code-for-blogpost/tree/main/sagemaker_endpoint_latency_check 記…

SageMaker Model Monitor ・Clarify でML監視を実践してみる

SageMaker Model MonitorとSageMaker Clarifyを使用して、ML監視を実践してみます。 本文中コード: https://github.com/nsakki55/code-for-blogpost/tree/main/sagemaker_model_monitoring ML監視 MLモデルの予測性能は、データと密接に関わっています。 本…

「現場で役立つシステム設計の原則」サンプルコードをPythonで書く

はじめに 現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法~ のJavaで書かれたサンプルコードをPythonで書いてみました。 本書はシステム設計の名著として有名で、コード・システムを綺麗に維持し続けるためのテクニックが…

「推薦システム実践入門」を読みました

「推薦システム実践入門」を読んだので、感想・各章の内容についてまとめてみます www.oreilly.co.jp 全体を通しての感想 著者の方々が現役のデータサイエンティスト・MLエンジニアというだけあり、サブタイトルの「仕事で使える導入ガイド」に相応しい「実…

AWS Certified Machine Learning - Specialtyを受けた感想と勉強内容

AWS

AWS Certified Machine Learning – Specialty(以下、MLS)を取得したので、MLエンジニアに取って役に立つ試験なのか、自分の勉強手順について書いてみます。 AWS Certified Machine Learning – Specialty mls icon AWS認定試験のうち、AWS上で機械学習を用い…

SageMakerでハイパーパラメータチューニングをWarmStartで実行してみる

SageMaker Hyperparameter Tuning JobでWarm Startを実行してみます 本文中のコードです github.com 目次 目次 データセット・モデル SageMaker Hyperparameter Tuningについて Estimator作成 学習データの準備 学習スクリプト Estimatorクラスの作成 親Tuni…

SageMakerでさくっとABテスト環境を作ってみる

特徴量の異なる2つの予測モデルのABテスト環境を、SageMaeker推論エンドポイントを用いて作ってみます。 本文中のコードです github.com 目次 目次 データ・モデル 学習 データ準備 学習スクリプト 学習ジョブの実行 モデル登録 推論スクリプト モデル登録 …

実行中のECS TaskのCloudWatchログを標準出力し、タスクの正常終了を判定する

本文中のコードです github.com やりたいこと boto3 で実行したECS Taskが成功・失敗したか実行側で判定したい ECS Task のCloud Watchログをポーリングし続けて、実行ログを標準出力し続けたい 実装したコード task_arn, ecs_cluster を引数に受け取り、ECS…

SageMaker で学習ジョブを実行する ~独自コンテナ~

SageMaker で学習ジョブを実行する ~独自スクリプト~ - nsakki55 のアウトプットブログの続きです 記事中のコード github.com SagaMaker を用いたモデルの学習 SageMaker では学習に必要なスクリプトやライブラリをコンテナベースで管理し、学習に必要なイン…