タグ

*infraとpythonに関するsh19910711のブックマーク (32)

  • OpenTelemetryのPythonインストゥルメンテーションパターン分類

    https://opentelemetry.io/docs/languages/python/automatic/example/ の要点抽出です。 手動(manual)インストゥルメンテーション 概要: プログラムの処理中で tracer.start_as_current_span でスパンを作成する @app.route("/server_request") def server_request(): with tracer.start_as_current_span( "server_request", context=extract(request.headers), kind=trace.SpanKind.SERVER, attributes=collect_request_attributes(request.environ), ): print(request.args.ge

    OpenTelemetryのPythonインストゥルメンテーションパターン分類
    sh19910711
    sh19910711 2024/05/21
    "自動インストゥルメンテーション: モンキーパッチによってログを出力 + コード自体にはOpenTelemetry用の内容変更はなし + 監視用プロセス内でサーバーを起動 / FlaskInstrumentor"
  • X-RayはpytestとFlameGraphを組み合わせると便利 - Qiita

    この記事を3行で AWS X-Rayをpytestで使うと便利 関数の通過や例外の発生をassertでテストできる X-Rayの可視化にFlameGraphを使えば、各関数の実行時間が分かりやすい この記事を書く理由 AWS X-Rayが便利なので、AWS環境へのデプロイの前でも使える使い方を紹介したい。 完成後の挙動 この記事で作成する単体テストを、Pytestで実行すると、 単体テストが吐き出したX-Rayのデータをもとに、下のようなグラフがローカルのPC上に作成されます。 FlameGraphと呼ばれているグラフです。炎のように下から上に伸びていくことが特徴です。 グラフの縦の方向は関数の呼び出しを表しています。 たとえばこのグラフなら、下から上に読んで、lambda_handler関数がnetwork_process関数を呼び出して、そこからgoogle.co.jpへのリクエストを

    X-RayはpytestとFlameGraphを組み合わせると便利 - Qiita
    sh19910711
    sh19910711 2024/05/16
    "AWS X-Rayをpytestで使うと便利 / 実行された関数が想定通りか、例外の内容が想定通りか、といった試験が書きやすく、分かりやすい / 実装を変えながらパフォーマンスを比較 + 異常系のパフォーマンスを計測"
  • AWS Step Functionsの単体テスト実施手順 | takemikami's note

    AWS Step Functionsの単体テストをローカル環境で実施したい場合、 AWSのドキュメントに「AWS Step Functions Local」を使った方法が記載されており、 AWS Step Functionsから呼び出す処理(Lamda,SQSなど)をモックする方法もあります。 ステートマシンのローカルテスト | docs.aws.amazon.com https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local.html モックサービス統合の使用 | ステートマシンのローカルテスト | docs.aws.amazon.com https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local-test-sm-exec.html

    AWS Step Functionsの単体テスト実施手順 | takemikami's note
    sh19910711
    sh19910711 2024/05/09
    "Step Functionsの単体テスト: ドキュメントに「AWS Step Functions Local」を使った方法が記載 + 呼び出す処理(Lamda,SQSなど)をモックする方法もあり / 繰り返しの実施をしやすいようにpytestに組み込む"
  • 構成図を『描く』から『書く』へ:DiagramsでAWS構成図かいてみる - Qiita

    やること "Diagram as Code"ことDiagramsで、AWS構成図をコードでかいてみる Diagramsとは Diagramsは、Pythonモジュール Diagrams使うにはGraphvizも必要 Pythonのコードでクラウドシステムアーキテクチャを描画できる サイトはここ https://diagrams.mingrammer.com/ サイトにあるDiagramsの説明は、英語だけど分量が少ないので一読すべし!(自動翻訳で十分理解できる) このように、構成図をPythonのコードで書ける。このコードを、Pythonスクリプトとして実行すると、構成図が画像として出力される。 良いところ 構成図をコード化できる コード編集で作図編集できるので、画像修正より楽 コードなので、CloudFormationのコードとまとめてGitで管理できる AWS以外のアイコンも用意されて

    構成図を『描く』から『書く』へ:DiagramsでAWS構成図かいてみる - Qiita
    sh19910711
    sh19910711 2024/05/09
    "Diagrams: 構成図をコード化できる + コードなのでCloudFormationのコードとまとめてGitで管理できる + AWS以外のアイコンも用意されている / 代用アイコンを決めておけばチーム内で共有する構成図として十分に使えそう" 2020
  • 本当に小さく機械学習プロダクトを始めるには - Qiita

    TL;DR マイクロサービス基盤がない、潤沢にエンジニアリソースがない、そんな現場にも機械学習プロジェクトをいい感じにプロダクトに乗せていく今風のやり方について考えたい。そのために現状世の中にある機械学習ツールを俯瞰したい。 プロダクトに乗せるとすると、デプロイで終わりではなくて、モデル再学習やモニタリングなども含めて考えたい。 はじめに 機械学習のサービスは内部のアルゴリズムが複雑であっても、そのサービス自体に求められることが多くなかったり、学習と推論時で必要なリソースが異なったりというところからマイクロサービスアーキテクチャと相性が良いと言われています。実際に機械学習をプロダクトで使うことについて意欲的に取り組んでいる企業、特にWeb系企業では既にマイクロサービスアーキテクチャを採用した基盤があり、その上で効率的に機械学習モデルをデプロイするための方法を検討しています。一方で、そうでな

    本当に小さく機械学習プロダクトを始めるには - Qiita
    sh19910711
    sh19910711 2024/04/22
    "kubeflow pipelines: 特徴的なのは、TFXのいちコンポーネントであるTensorflow Transform(TFT)を使えるところ + 設定項目に"preprocess-mode"というものがあり、Kubernetes上ではなくDataflow上で動作させることもできます" 2018
  • LangChainをAPI化するLangServeをLambda上で動作させるのはめちゃ簡単デス - Qiita

    少し前にLangChain開発元から新しいツールとしてLangServeというものがリリースされています。 LangServe is the easiest and best way to deploy any any LangChain chain/agent/runnable. 生成系AIを使ったAPIを簡単に作成し利用できる仕組みで、プロダクション環境でどんどんLangChainを使ってねというメッセージと捉えました。 イメージとしてはこんな仕組みです。 FastAPI上で動作し、API仕様が定められている感じです。 Invoke API 単一の入力で処理を実行する Batch API 複数の入力で処理を実行する Stream API 単一の入力で処理を行い、結果をストリームで返却する Stream_log API 単一の入力で処理を行い、結果だけでなく途中の経過もストリームで返却す

    LangChainをAPI化するLangServeをLambda上で動作させるのはめちゃ簡単デス - Qiita
    sh19910711
    sh19910711 2024/02/19
    "LangServe: 生成系AIを使ったAPIを簡単に作成し利用できる仕組み + FastAPI上で動作 / Lambda Web Adapter: AWS製 + FastAPIのLambda化を行う便利なライブラリー / Lambda: Python 3.12ランタイムはBoto3のバージョンが1.28.72のため、Bedrockに対応"
  • k6で負荷試験してpandasで集計した話 - Qiita

    はじめに この記事はHRBrain Advent Calendar 2022 カレンダー3の19日目の記事です。 こんにちは!株式会社HRBrainでエンジニアをしているZamaです。 みなさんは負荷試験してますか? 画面をポチポチする機能テストはちゃんとやっていても、負荷試験は忘れられていたり先送りにされてしまいがちですよね…… そんな負荷試験ですが、k6を用いて実施したら結果表示がイマイチだったので詳細なログファイルをpandasで集計した話です! k6とは k6は負荷試験のツールで、JavaScriptAPIの呼び出しなどを記述します。 import http from 'k6/http'; export default function () { const res = http.get('https://example.com'); check(res, { 'response

    k6で負荷試験してpandasで集計した話 - Qiita
    sh19910711
    sh19910711 2023/06/16
    "k6 Cloud: 複数台のEC2インスタンスから負荷をかけられたり、詳細でリッチに可視化された結果を確認できたり / --out csv=<ファイル名>とオプションを付けて実行すれば、詳細なログがCSVファイルに吐き出されます" / 2022
  • fabric2いいかも • masu-mi's blog(dirty pages)

    最近になって「fabricで作業の自動化を増やしたい」と思うことがありました。 調べてみたらPython3対応されたfabricはfabric2として独立していました。そしてfabric2を待ちきれずにフォークされたfabric3はメンテされている様子はありません。 正解はfabric2です。 fabric2はfabricと違いinvokeのssh拡張がついたラッパーなようです。 使うにあたりConfig, Connection, Groupの違いを確認したりしました。 また気楽なタスクランナーとして使うためにヘルパーやパターンが出てきたのでメモします。 実験した残骸はここに残してます。 pkg version

    sh19910711
    sh19910711 2023/02/13
    2021 / "調べてみたらPython3対応されたfabricはfabric2として独立していました / fabric2を待ちきれずにフォークされたfabric3はメンテされている様子はありません。 正解はfabric2です"
  • Streamlit on Cloud Run with Identity-Aware Proxy (IAP) - public note

    タイトルのとおり、Cloud Run で Streamlit を動かしてみました。また、特定の人のみがアクセスできるように、Identity-Aware Proxy(IAP) での保護を試しましたので、その設定やコードを紹介します。 Cloud Run で動かすのはすぐにできたのですが、複数の Streamlit コードを認証付きでいい感じにホストする手段を探すのにかなり苦戦しました... Streamlit 構成図 ソースコード リクエストから Streamlit が起動するまで よいところ 設定のポイント ユーザ認証方法 Cloud Run の Ingress 設定 IAP で必要な権限 パスルール設定 リクエストURL に Streamlit の起動URLを合わせる サーバーレス NEG と Cloud Run の設置リージョン 参考にしたページ Streamlit Streamli

    Streamlit on Cloud Run with Identity-Aware Proxy (IAP) - public note
    sh19910711
    sh19910711 2021/08/08
    "Matplotlib や Plotly のグラフをそのままアプリケーションに表示 / キャッシュ機構を備えておりその対象やクリアのタイミングを制御できる / cloud_run のあたりで 個別のサービスを指定せず url_mask を設定するのがポイント"
  • Optunaを使ったRocksDBのパフォーマンスチューニング

    README.md 概要 Optunaというハイパーパラメータ最適化ツールを使って、RocksDB(組み込みDB・KVS)のパフォーマンスチューニングを試してみた際の結果メモ 対象となるワークロードに対して、最適な性能を発揮するパラメータ群を自動で見つけ出すのが目的 結果としては、デフォルトパラメータをそのまま使った場合に比べて、かなり良い性能が得られるパラメータ群を見つけることができた: デフォルトでのベンチマークの所要時間: 372秒 Optunaによる最適化後のパラメータでの所要時間: 30秒 モチベーション RocksDBには、カスタマイズできるパラメータ群が多数ある(数十~数百?) 自分の利用用途に最適なパラメータ群を人手で調べるのは結構大変 RocksDBは、チューニングガイドを含めて、かなりドキュメントが充実しているが、それでも不慣れな人には敷居が高い ↑のような状況は、Ro

    Optunaを使ったRocksDBのパフォーマンスチューニング
  • PythonでLambda Functionを書く時にデコレータでイベントソース毎の共通処理をすると便利という話

    この記事はServerless2 Advent Calendar 2018の21日目の記事です。 qiita.com 先日 AWS Lambda Custom Runtimes芸人 Advent Calendar 2018 の方はちょっとはっちゃけすぎた感もありつつ実戦にすぐに役に立つような内容ではなかったですが、今回はマジメにより実戦的な内容で行きたいと思いますw marcy.hatenablog.com はじめに 私は普段は主にPythonLambda Functionを書いているのですが、イベントの処理方法を予め決めてデコレータで共通処理を行うようにしています。それによってServerlessな開発でよく話題になるトレーサビリティの問題やエラーハンドリングの煩雑さなどをある程度上手く解決できているので紹介したいと思います。 なお、出てくるコードは実際に使用しているものに近いですが、

    PythonでLambda Functionを書く時にデコレータでイベントソース毎の共通処理をすると便利という話
  • S3に直接アップロード可能なPre-Signed URLをLambdaで作ってみる | DevelopersIO

    S3にはPre-Signed URLという機能があり、S3のオブジェクトへの限定的なアクセスを提供することが可能です。 一時的に認証なしで直接S3へファイルをアップロードすることができるところが便利そうです。 このPre-Signed URLをLambdaで作ってみたのでご紹介いたします。 S3にはPre-Signed URLという機能があり、S3のオブジェクトへの限定的なアクセスを提供することが可能です。 弊社ブログでもいくつか紹介されています。 Amazon S3 の署名付き URL を利用して Android から画像をアップロードする | DevelopersIO Boto3でS3のpre-signed URLを生成する | DevelopersIO あらかじめ限定的なアクセスに絞っておくことで、一時的に認証なしで直接S3へファイルをアップロードすることができるところが便利そうです

    S3に直接アップロード可能なPre-Signed URLをLambdaで作ってみる | DevelopersIO
    sh19910711
    sh19910711 2020/05/31
    generate_presigned_url
  • Fargateで起動するPythonの定期バッチをAWS-CDKで構築する - Qiita

    Fargateで起動するPythonの定期バッチをAWS-CDK(Python)で構築する Lambdaの15分制限を突破するために、Fargateを使用することにした。 CDKのPythonで書かれたサンプルコードをあまり見ないので、備忘録がわりに投稿してみる。 AWS-CDKを触ったことがない方はこちらのワークショップを一通り終わらせるとイメージが付きやすいと思います。 この記事のソースはGitHubのこちらのリポジトリにあります。 これを作るよー 開発環境構築 今回はCloud9で構築したが、CDKとPythonDockerを入れればMacでもWindowsでも動く、はず。 AWS CDK Cloud9には現時点で最初からCDKが入っていないので、事前にインストールすること。

    Fargateで起動するPythonの定期バッチをAWS-CDKで構築する - Qiita
  • AWS Lambda で Python 3.8 ランタイム がサポートされました | DevelopersIO

    AWS チームのすずきです。 Python 3.8 をサポートした AWS Lambda、試す機会がありましたので紹介させていただきます。 AWS Lambda now supports Python 3.8 マネジメントコンソール 「Python 3.8」を、Lambda関数のランタイムとして選択可能になりました。 関数コード Python 3.8 でサポートされた「セイウチ演算子」(:=) を含むコード、テスト実行してみました。 実行コード import sys def lambda_handler(event, context): if (a := sys.version_info): print(a) 結果 Python の マイナーバージョン「8」である事を確認できました。 sys.version_info(major=3, minor=8, micro=0, releasele

    AWS Lambda で Python 3.8 ランタイム がサポートされました | DevelopersIO
    sh19910711
    sh19910711 2019/11/24
    Lambdaでセイウチできるようになった
  • DataflowでPython3系を使って良いのか検討してみた - case-kの備忘録

    DataflowPython3系を使って良さそうか調べてみました。 Python3系を使いたい理由 DataflowPython3系のサポート状況について Apach Beamのissueについて 動作確認 ストリーミング処理は? 結論(個人的な) Python3系を使いたい理由 DataflowはETLツールなのでデータ加工が主な役割です。Dataflowのサポートする言語としてJavaGoも扱えますが、Pythonと比較すると機械学習系のライブラリが不足していたり、学習コストも高いです。またバッチ処理を作る前に行う分析作業はJupyterで行うため、Pythonで作ったコードも使えません。また、Python2系は以前よりDataflowでサポートされてますが、2020年目処にPython2系は非推奨となります。なので3系でDataflowを使いたいと考えてます。 Dataflow

    DataflowでPython3系を使って良いのか検討してみた - case-kの備忘録
    sh19910711
    sh19910711 2019/11/04
    "Apache Beam 2.14.0 以降の Python 3 SDK はベータサポートとなっておりDataflowでPython3系は扱えるようになってます"
  • AWS Cloud Development Kit (CDK) – TypeScript and Python are Now Generally Available | Amazon Web Services

    AWS News Blog AWS Cloud Development Kit (CDK) – TypeScript and Python are Now Generally Available Managing your Infrastructure as Code provides great benefits and is often a stepping stone for a successful application of DevOps practices. In this way, instead of relying on manually performed steps, both administrators and developers can automate provisioning of compute, storage, network, and appli

    AWS Cloud Development Kit (CDK) – TypeScript and Python are Now Generally Available | Amazon Web Services
  • LambdaのLayer機能活用してpandas,pyarrow,s3fs使ってParquet変換する簡易ETL処理を実装する - YOMON8.NET

    小さなファイルのETLにGlueを使うのがもったいなかったので、Pandasやpyarrowで実装しました。 Lambda Layerにpandasとpyarrowを追加 Layerに登録するパッケージを作成 パッケージをアップロード Lambdaのコード エラー対応 参考 Lambda Layerにpandasとpyarrowを追加 Layerに登録するパッケージを作成 今回利用するのはpandasとpyarrow、s3fsなのですが少し工夫が必要でした。 3つを全てを一つのZIPに纏めるとLambda Layerの50MBの制限にかかってしまいます。 3つにZIPを分割するとLambdaにレイヤー追加する時の制限にかかってしまいます。 Layers consume more than the available size of 262144000 bytes 大きなnumpyなどを共有

    LambdaのLayer機能活用してpandas,pyarrow,s3fs使ってParquet変換する簡易ETL処理を実装する - YOMON8.NET
    sh19910711
    sh19910711 2019/06/07
    pyarrow + s3fs、便利だな
  • 3分でサーバオペレーションコマンドを作る技術

    #pyconjp 2015 の LTで発表した際に利用した資料です https://pycon.jp/2015/ja/schedule/presentation/93/

    3分でサーバオペレーションコマンドを作る技術
    sh19910711
    sh19910711 2019/03/03
    fabric + click
  • DataflowとTFRecordでシームレスなMLパイプライン構築

    最近では、機械学習を用いた事例が徐々に聞かれるようになってきました。しかし、MLエンジニアの方々からは「モデルを作ったはいいが、プロダクションに持っていくのは難しい」という声をよくいただきます。この要因は様々ですが、システムとして考慮しなければならない構成が多いというのが主だった要因になっています。 モデルはシステム全体のごく一部(黒い四角部分)中でも特にMLエンジニアを悩ませるのは、データの前処理ではないでしょうか?機械学習では学習と推論時にデータを入力する必要がありますが、プロダクション時のデータは取得してそのままモデルに入力することはできません。なぜなら、データには欠損があるかもしれないし、画像ならモデルに合わせてサイズや階調を変える必要があるからです。さらに、これらのデータが大量にある場合は、1台のマシンでは処理しきれなくなるため、分散環境を構築する必要があります。そして、将来どこ

    DataflowとTFRecordでシームレスなMLパイプライン構築
    sh19910711
    sh19910711 2018/11/27
    Apache Beamでtfrecords出力できる
  • PostgreSQLとcupyを繋ぐ~機械学習基盤としてのPG-Stromその①~ - KaiGaiの俺メモ

    世間の機械学習屋さんは、機械学習・統計解析のライブラリにデータをわせる時に、どうやってデータを入力しているのだろうか? 話を聞くに、データを一度CSV形式に落とし込んで、それをPythonスクリプトで読み込むというパターンが多いようではある。 ただ、ある程度大量のデータセットをCSVファイルで扱うようになると、いくつか問題点が露わになってくる。 解析すべきデータセットを切り替えるたびに異なるCSVファイルを用意する事になり、ファイルの取り回しが煩雑である。 前処理をかけた後のCSVファイルがまたできてしまい、ファイルの取り回しが更に煩雑になってくる。 最終的にCSVファイルの所在が誰にも分からなくなってしまい、機械学習・統計解析の元になったファイルが散逸してしまう。 そもそも、GB単位のフラットファイルをシェル上でコピーしたり読み込ませたりするのはそれなりに時間を要する処理である。 デー

    PostgreSQLとcupyを繋ぐ~機械学習基盤としてのPG-Stromその①~ - KaiGaiの俺メモ
    sh19910711
    sh19910711 2018/09/05
    おぉ / "GPUへのデータロードはGstore_fdwを用いてSQLで行った上で、その後のデータ操作、データ解析はPythonスクリプトで実行するというワークフローが出来上がる"