Python
構成 プライベートサブネット内で起動したlambda関数から、インターネットを経由せずSESを呼び出そうと思います。 本記事では以下の構成でlambda関数からSESを呼び出します。 acrhitecture 本文中コード. github.com lambdaからSESにアクセスする手段 プライ…
本文中コード github.com flat layoutとsrc layoutについて Pythonプロジェクトのディレクトリ構成について調べてたところ、flat layoutとsrc layoutという2種類のディレクトリ構成が存在することを知りました。 src レイアウト対フラットレイアウト - Pytho…
本文中コード github.com Noxとは Noxはテスト用のpython仮想環境を作成し、テストを自動化するコマンドラインツールです。 Welcome to Nox — Nox 2024.10.9 documentation Noxを利用することで以下のことを実現できます。 チームメンバーのローカルPC上の環…
AWS Glue Jobによるicebergテーブル操作 AWS Glueではicebergテーブルフォーマットがサポートされています。 AWS Glue での Iceberg フレームワークの使用 - AWS Glue iceberg形式は大規模なデータセットを効率的に処理を行うことができる、データレイクに保…
Glue Jobのローカル開発 AWS Glue Jobをローカル環境で開発する際、AWS公式が提供してるDocker imageを活用する方法があります。 Developing and testing AWS Glue job scripts locally Glue Jobを利用する場合、S3からデータを取得・保存するユースケースが…
Prefect 3.0とは 2024年6月にPrefect 3.0のtechnical preview版がリリースされました。 Introducing Prefect 3.0 2022年7月にPrefect 2.0がリリースされたので、2年ぶりのメジャーアップデートとなります。 Prefect 1.0から2.0へのメジャーアップデートの際…
ControlFlowとは Prefect社が2024年6月に公開した、LLM Agentワークフローを構築するOSSのPythonフレームワークです。 公式リリース記事: Agentic LLM Workflows | ControlFlow by Team Prefect 上記事ではLLMを含むワークフローの構築には、3つの課題が存在…
問題 ~/.zshrcに記述した eval "$(pyenv virtualenv-init -)" によって、zshのプロンプト表示が遅くなってることに気づきました。 原因と解決方法を調べたのでまとめました。 結論 ~/.zshrcに記述するのを eval "$(pyenv virtualenv-init -)" ↓ eval "$(pyen…
この記事は MLOps Advent Calendar 2023の20日目の投稿記事です。 PrefectワークフローをKubernetes Jobで実行する方法を紹介します。 本文中コード: code-for-blogpost/prefect_gke at main · nsakki55/code-for-blogpost · GitHub Prefect × Kubernetes Pr…
Prefect 2.10以降、インフラ管理の方法はAgentが非推奨となりWorkerが推奨となりました。 PrefectのWorkerについてのまとめ、KubernetesにWorkerをデプロイする場合のmanifestを紹介します。 本文中コード: code-for-blogpost/prefect_kubernetes_worker at …
ゼロから自作したパケットをpythonのsocket通信を用いてサーバーに送信します。 SYNフラグのパケットをサーバーに送り、SYN, ACKフラグのパケットが返ってくるところまで確認します。 実行環境 $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20…
Pythonのメモリプロファイルを行うためにmemrayを使用したところ、インストールからプロファイル実行まで手軽にでき、レポート方法が豊富で使い勝手が良かったので使用方法を紹介します。 本文中コード:code-for-blogpost/memray at main · nsakki55/code-f…
概要 Prefectを本番運用する場合、Flowの実行設定であるDeploymentをPrefect Cloudに登録する必要があります。 Prefectでワークフローを運用する場合、FlowとDeploymentをGitHubレポジトリでコード管理するケースが多いと思います。 この記事では、レポジト…
概要 PrefectではFlow内部で別のFlowを実行する、Sub Flowという概念があります。 Flows - Prefect Docs 例えばMLの学習パイプラインを 学習データの取得 前処理 学習 のように処理に分ける場合、各処理を1つのFlowとしてグループ化できます。 Sub Flowを呼…
PrefectでFlow実行名を変更する方法を紹介します。 本文中コード: code-for-blogpost/prefect_rename_flow at main · nsakki55/code-for-blogpost · GitHub flow実行名の変更について PrefectのFlow実行名は、デフォルトではランダムに名前が割り当てられま…
Pythonパッケージ管理ツール ryeの使い勝手がよかったので使用方法をまとめました。 ryeとは GitHub: https://github.com/mitsuhiko/rye flaskの作者である Armin Ronacher氏 (GitHubアカウント @mitsuhiko)が個人利用目的で作成した、Pythonのパッケージ関…
概要 PrefectではInfrastructure blockにECS Task Blockを指定することで、FlowをECS Taskで実行することができます。 本記事では、FlowをECS Taskで実行する2パターンの手順を紹介します。 本文中コード: https://github.com/nsakki55/prefect-ecs-task-flo…
本文中のコード github.com Prefect 2.0 2022年7月にPrefect 2.0が正式リリースされました。 Prefect1.0のサポートが2023年5月1日に終了するため、Prefect 2.0への移行が必須となっています。 Prefect 1.0から2.0に移行するメリットは次のmediumの記事が参考…
PrivateLinkによる低レイテンシー推論 SageMaker 公式ドキュメントで、SageMaker Endpointの低レイテンシー推論のベストプラクティスとして、PrivateLinkの利用が紹介されています。 低レイテンシーのリアルタイム推論AWS PrivateLink - Amazon SageMaker リ…
この記事はMLOps Advent Calendar 2022にリンクしてます。 SageMaker Endpointのレイテンシーを、負荷試験ツールLocustで計測してみました。 本文中のコード: https://github.com/nsakki55/code-for-blogpost/tree/main/sagemaker_endpoint_latency_check 記…
SageMaker Model MonitorとSageMaker Clarifyを使用して、ML監視を実践してみます。 本文中コード: https://github.com/nsakki55/code-for-blogpost/tree/main/sagemaker_model_monitoring ML監視 MLモデルの予測性能は、データと密接に関わっています。 本…
はじめに 現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法~ のJavaで書かれたサンプルコードをPythonで書いてみました。 本書はシステム設計の名著として有名で、コード・システムを綺麗に維持し続けるためのテクニックが…
private 変数とは? Python には外部からアクセスができない厳密な意味で private な機能は用意されていません。 代わりに、アンダースコアを属性名の先頭につけることで、プログラマに private な属性であることを明示する機構があります。 PEP8 の命名方法…
pymock でモック化した際に、モックが呼び出された時の特定の引数の値を取得する機会があったのでやり方を紹介します。 やりたいこと 以下のような、外部で定義した関数(例: calc_sum)を呼び出す処理を行うメソッド(例: process_{one, two})をテストする際に…
Mac で g++ でコンパイルされた setup.py を実行しようとすると、clang でコンパイルされ困ったので、解決策を書き留めておきます。 ハマった内容 Cython で書かれた python パッケージを setup.py でインストールする際に、Mac の Xcode 付属のclang がコン…