タグ

pythonとworkflowに関するsh19910711のブックマーク (21)

  • gokart + PyTorch Lightning でいい感じに深層学習モデルを動かす - そぬばこ

    この記事は Sansan Advent Calendar 2021 20日目の記事です。 前日は、id:kur0cky さんの kur0cky.hatenablog.com でした。 私は過去陸上部だった時代があるのですが、個人的にはフォームも気にしたほうがいいと思います(感想)。 この記事は何か 私が所属している研究開発部には、パイプラインに則ってコードを書こうという文化が浸透してきました。 これらのパイプラインのパッケージは、弊社の研究員が弊社ブログにて既に様々書いているので、ぜひこちらを御覧ください。 buildersbox.corp-sansan.com buildersbox.corp-sansan.com さらに、PyTorch のラッパである PyTorch Lightning はいいぞとの布教をとある研究員の方から受け、良さそうだなとなりました。 PyTorch Light

    gokart + PyTorch Lightning でいい感じに深層学習モデルを動かす - そぬばこ
    sh19910711
    sh19910711 2024/05/18
    "poetry 1.1.12 では、 torchvision が torch の "x.x.x+cpu" に依存しているのにも関わらず 、 '+' 以降がうまく解釈できず / gokart のタスクで切ることで全体的に処理フローが見えやすい形になった" 2021
  • 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に組み込む"
  • Kedroで機械学習パイプラインに入門する - Qiita

    はじめに Kedroという機械学習向けパイプラインツールを使ってみたので備忘までに記事を書きます。 とりあえずパイプラインを組んでみて動いたところまで、です。もう少し使い込んで、別途投稿できればと思っています。 公式のチュートリアルの差分は、以下くらいかなと思います。(どっちもちょっとしたことですが) ホストを汚さないようにDockerコンテナ内でKedroプロジェクトを作成・開発していること node.pyは使わず、普段慣れ親しんだディレクトリ構成で普通にスクリプトを書いていること(それらをノードとしてパイプラインでつないでいる) パイプラインツールの必要性 依存関係が複雑になりがちな処理処理フローを管理したい データ取り込み→データ前処理→モデルのトレーニング→チューニング→デプロイメント、etc ジョブを並列実行したい コンポーネントごとにマシンスペックを柔軟に設定したい 前処理は高

    Kedroで機械学習パイプラインに入門する - Qiita
    sh19910711
    sh19910711 2024/05/07
    "Kedro: Cookiecutterによるプロジェクトテンプレートを提供 + Pandas/Spark の切り替えなどにコードの改変が不要 + parameters.ymlに記述しておけばstringで簡単に読み出せる" 2020
  • MLflowのデータストアを覗いてみる - 株式会社ホクソエムのブログ

    (2020/08/14 flavorについての記載を一部修正) はじめに こんにちは、ホクソエムサポーターの藤岡です。 最近、MLflowを分析業務で使用しているのですが、お手軽に機械学習のモデルや結果が管理できて重宝しています。 また、特定のライブラリに依存しないなど、使い方の自由度も非常に高いところが魅力的です。 ただ、ザ・分析用のPythonライブラリという感じでとにかく色々なものが隠蔽されており、 サーバにつなぐクライアントさえもプログラマあまりは意識する必要がないという徹底っぷりです。 もちろんマニュアル通りに使う分には問題ないですが、 ちゃんと中身を知っておくと自由度の高さも相まって色々と応用が効くようになり、 様々なシチュエーションで最適な使い方をすることができるようになります。 というわけで、今回はMLflowの記録部分を担う、 Experiment, Run, Artif

    MLflowのデータストアを覗いてみる - 株式会社ホクソエムのブログ
    sh19910711
    sh19910711 2024/05/02
    "MLflow: とにかく色々なものが隠蔽 + ちゃんと中身を知っておくと自由度の高さも相まって色々と応用が効く / データマートとかもMLflowで管理してみたのですが、案外できてしまった(しかも割と便利だった)" 2020
  • MLflow上でOptunaによって生成される大量のrunを整理する | フューチャー技術ブログ

    はじめにこんにちは、SAIG/MLOpsチームでアルバイトをしている齋藤です。 MLflowは機械学習の管理を扱うツールとして、Optunaはハイパーパラメータを自動調整するツールとしてともに広く使用されているツールです。MLflowとOptunaを同時に利用した際に、Optunaが複数回試行することによってMLflow上にrunが大量に生成され、MLflow上で試行結果が見づらくなります。 記事では、大量に生成されるrunに親のrunを付与することで、MLflowのWebUIから見やすくする方法を提示します。 課題Optunaは事前に指定した範囲の中からハイパーパラメータの組み合わせを自動的に選択してモデルを学習して評価するという試行を繰り返すことで、良いハイパーパラメータを探索するツールであり、これにより手作業でハイパーパラメータを調整するのを省けます。 MLflowは機械学習の管理

    MLflow上でOptunaによって生成される大量のrunを整理する | フューチャー技術ブログ
    sh19910711
    sh19910711 2024/04/23
    "MLflow: mlflow.parentRunIdというタグ + 親のrunのIDを設定すると、WebUI上で親子のrunがネスト / Optunaによって生成される大量のrunを一つの親runに結び付けることができます / システムタグは.parentRunId以外にも存在"
  • PyCaretとMLflowで機械学習の実験を簡単に実行・記録する - DATAFLUCT Tech Blog

    こんにちは!nakamura(@naka957)です。今回はPyCaretとMLflowを用いたAutoMLと実験記録を連携した活用方法をご紹介します。 今回は様々な機械学習アルゴリズムの比較・モデル実装に加えて、行った実験記録の管理を簡単に行う方法をご紹介します。実施事項がたくさんありますが、PyCaretとMLflowの活用で少ないコード行数で簡単に実施できます。 PyCaretは機械学習モデルの実装を簡単に行えるOSSですが、PyCaretからMLflowを呼び出すこともでき、実験記録の管理も同時に行えます。 【PyCaret】 ■ AutoMLライブラリPyCaretを使ってみた〜モデル実装から予測まで〜 ■【続き】 AutoMLライブラリPyCaretを使ってみた 〜結果の描画〜 【MLflow】 ■ MLflowの使い方 - 機械学習初心者にもできる実験記録の管理 - ■ ML

    PyCaretとMLflowで機械学習の実験を簡単に実行・記録する - DATAFLUCT Tech Blog
    sh19910711
    sh19910711 2024/04/23
    "PyCaret: AutoML + 前処理から機械学習アルゴリズムの比較・パラメーター調整・実装まで / PyCaretからMLflowを呼び出すこともでき + 実験記録の参照と再現性の確保を簡単にできる" 2022
  • 本当に小さく機械学習プロダクトを始めるには - Qiita

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

    本当に小さく機械学習プロダクトを始めるには - Qiita
    sh19910711
    sh19910711 2024/04/22
    "kubeflow pipelines: 特徴的なのは、TFXのいちコンポーネントであるTensorflow Transform(TFT)を使えるところ + 設定項目に"preprocess-mode"というものがあり、Kubernetes上ではなくDataflow上で動作させることもできます" 2018
  • Kedroにおける特徴量のバージョニング方法の一案 - Qiita

    (異常に脱字が多かったので見直しました 12/28) 最近検証を兼ねて、Kedroを使ってMLモデル開発におけるワークフロー管理をしています。 Kedroはワークフロー管理ツールの一つであり、python関数をnodeというクラスでラップしてつなぎ合わせることでPipelineを構成すること、nodeの入出力は全てData Catalogと呼ばれるメモリやストレージを抽象化したファイルシステムクラスで管理されることが特徴です。io自体は別個のDataSetというモジュールを用意して対応しています。 kedroの利用にあたって学習用に生成した特徴量と推論用に生成した特徴量を、中間生成物を含めて丸ごと別々に保存したいと考えましたが、どうもその分けて保存する方法についてストレートな解決方法が見つからなかったため、今回試行した方法をこちらに残します。 前提 kedroが自動生成してくれるプロジェク

    Kedroにおける特徴量のバージョニング方法の一案 - Qiita
    sh19910711
    sh19910711 2024/04/18
    "学習用に生成した特徴量と推論用に生成した特徴量を、中間生成物を含めて丸ごと別々に保存したい / Kedro + TemplatedConfigLoader: 0.17.0から実装 + yamlにプレイスホルダーを設定でき、値をコードから注入できます" 2020
  • CeleryによるPythonベース非同期タスク処理

    はじめに 例えば機械学習モデルを運用する際に、WebAPI形式で予測を提供するのは一般的な方法と言えます。ここで推論処理に時間がかかる場合には、リクエストに対するレスポンスだけ先に返しておき、処理の体はバックグラウンドで非同期的に実行するという選択肢が存在します。 記事では、Pythonベースの分散タスクキューツールであるCeleryを用いて、WebAPIへのリクエストに対応したタスクを非同期実行し、結果を確認するまでを紹介します。サンプルコードは以下に配置しました。 Celeryとは 公式ドキュメントの冒頭には以下のように書かれています。 Celery is a simple, flexible, and reliable distributed system to process vast amounts of messages, while providing operation

    CeleryによるPythonベース非同期タスク処理
    sh19910711
    sh19910711 2024/04/13
    "Flower: Celeryの処理状況をモニタリングするためのライブラリ + タスクの処理状況をダッシュボードとしてブラウザから確認できる / FastAPI: BackgroundTasksという機能があり、非常に簡単に非同期処理を実現" 2021
  • PyAirbyteで始める簡単Data Injest Pipeline

    はじめに PyAirbyteがリリースされました。(2024/03/16時点ではBeta版なのでご注意を) PyAirbyteはExtractのコネクタ部分をPythonのライブラリとして提供してPandasに格納するという機能を提供しているらしい。 つまり、BigQueryのクライアントと合わせればExtractとLoadの部分を過疎結合にしつつ、スケジューラーでPythonを呼び出すだけのシンプルなData Injest Pipelineを作ることが可能なのでは!?ということで検証します。 個人的に考えるData Injestツールの抱える課題点 FivetranのようなSaaSを使い始める際は規約確認や、契約がとても面倒 Airbyteは契約関連の面倒な部分は無いが、運用工数が大きすぎる worker, sever, temporal, api, dbなどなど(ちゃんと拡張性を考えて

    PyAirbyteで始める簡単Data Injest Pipeline
    sh19910711
    sh19910711 2024/03/17
    "SaaSを使い始める際は規約確認や、契約がとても面倒 / Airflowでスケジューリング機能があって、Fivetranでもスケジューリング機能があって、Airflowの各種OperatorでELの機能があって、FivetranでELの機能があって"
  • Python Pandasはバッチ処理に向いてない - Qiita

    Pandasって? Pandasは、DataFrameという表形式のデータ構造を中心に、様々なデータ処理ができるライブラリ。 データベースでいうところのテーブルなので、SQL知ってればすぐに入門できる。Pythonデータ分析する人にはお馴染み。 どういう経緯で導入したの? 伝聞情報も多いけれど、こんな流れで開発チームに導入されたのだと思う。 オンプレミスとクラウドのハイブリッド化が進み、どんどんデータベース・ストレージが分散していく。 データフローの管理が課題となり、Pythonでデータフローを組めるLuigiが導入される。 当初、Luigiは主にデータベース・ストレージへの入出力を担う予定だった。 チームの共通言語がScalaな事もあり、ロジックは外に切りだして堅く実装する予定だった。 Luigiから各データベース・ストレージへ接続できる環境を作る。 簡単な転送やレポートのデータフロー

    Python Pandasはバッチ処理に向いてない - Qiita
    sh19910711
    sh19910711 2023/06/24
    "簡単な転送やレポートのデータフローがLuigiで組まれていく / 改修が進みだんだんとフィルタ・結合・集計といった処理が入りこんで自然とPandasが使われる / 気づけばいくつかのバッチ処理がPandasに依存している状態" / 2017
  • mlflowとluigiによるML実験管理例 - Qiita

    はじめに 記事ではMLの実験を行うときの、コード、パラメータ、モデル、評価結果を管理するための構成例を紹介します。 サンプルコードはこちら 前提知識 Must python docker Want mlflow luigi 思想 前処理を加えたデータや学習したモデルなどプログラムで出力されるファイルは全てmlflowの管理下におく。 コードはgitで管理し、実験結果とcommit hashを紐づける。 前処理、学習、推論などタスク同士の依存関係を管理して、依存しているタスクを自動で実行できるようにする。また、既に実行されたタスクは実行しないようにする。 構成概要 titanicのdataに対して、前処理、学習、推論を行う例を紹介する。 ディレクトリ構成は以下のような感じ。 src/tasks/下に前処理などの具体的なタスクを行うファイルを作成する。 tomlファイルで実行するタスクを指定

    mlflowとluigiによるML実験管理例 - Qiita
    sh19910711
    sh19910711 2023/03/07
    2021 / "mlflow + luigi / 前処理を加えたデータや学習したモデルなどプログラムで出力されるファイルは全てmlflowの管理下に / 実験結果とcommit hashを紐づける / mlflow.sklearn.autologを用いることで、Metricsなどがいくつか自動で保存"
  • Python: Luigi でタスク共通のパラメータを扱う - CUBE SUGAR CONTAINER

    今回は、Luigi で複数のタスクが共通のパラメータを扱う方法について考えてみる。 ここらへん、調べてもあまりドキュメントなどが出てこなかった。 なので、ソースコードを読んでリバースエンジニアリング的に「こういう風にできそう」と判明した内容を書いてみる。 使う API のレイヤー的に、高レベルなやり方と低レベルなやり方が見つかったので、どちらも記載する。 使った環境は次のとおり。 $ sw_vers ProductName: macOS ProductVersion: 11.4 BuildVersion: 20F71 $ python -V Python 3.9.5 $ pip list | grep -i luigi luigi 3.0.3 もくじ もくじ 下準備 低レベル API (luigi.configuration.get_config()) を使う 高レベル API (luig

    Python: Luigi でタスク共通のパラメータを扱う - CUBE SUGAR CONTAINER
    sh19910711
    sh19910711 2021/08/10
    "luigi.Config は luigi.Task を継承しているだけで、他に何もしていない。 つまり、ほとんど同一のものということになる。 実は、luigi.Config を使わなくても、luigi.Task でも同じことはできる"
  • Airflow doc_md のすゝめ - toohskの日記

    この記事はZenn.devで書いた記事です。 Summary Airflow のdag とtask には、doc_mdというものがあるよ。 これを使えばタスクの定義や目的をみんな大好きMarkdown形式で記述することができるよ。 今回は、Airflow==1.10.12を使ってるけど、Airflow<=1.10.1から使えるからGoogle Cloud Composer でも使えるよ。 What's Airflow Airflow は元々はAirbnb が開発していたタスクスケジューラOSSでした。 今は、Apache コミュニティの一つのOSSとしての位置づけになっています。 また、マネージドサービスとしてはGCP のCloudComposerがあります。 仕組みなどは他の記事などを参照されたいが、簡単に要点を以下にまとめてみました。 それぞれのタスクはOperatorと呼ばれる処理を

    Airflow doc_md のすゝめ - toohskの日記
    sh19910711
    sh19910711 2021/07/10
    "Airflow のdag とtask には、doc_mdというものがある / Graph ViewやTree Viewに遷移すると描画されている / ここに説明を記述することで、task_idだけでは表現できない、リトライのことやDAGの目的などを書くことができます"
  • データオーケストレーションツールのDagsterを使ってみた | DevelopersIO

    大阪オフィスの玉井です。 dbt界隈の人たちがこぞって推奨している(ように思える)ツールであるDagsterを使ってみました。 Dasterとは? 公式の紹介文を引用します。 Dagster is a data orchestrator. It lets you define pipelines (DAGs) in terms of the data flow between logical components called solids. These pipelines can be developed locally and run anywhere. 「データオーケストレーター」と言われると、なかなかピンときませんが、ジョブ管理ツールの一種と思っていただければわかりやすいと思います(Apache Airflow等と同じカテゴリ)。データパイプラインの開発はもちろん、一連の処理の運用

    データオーケストレーションツールのDagsterを使ってみた | DevelopersIO
    sh19910711
    sh19910711 2021/05/16
    Dagster、タスク間の入出力をPythonの関数でそのまま表現できるのはシンプルで良さそう。ジョブステートの管理はどうなってるんだろ
  • Luigi逆引きリファレンス - Qiita

    import luigi class MyTask(luigi.Task): date = luigi.DateParameter() def requires(self): return MyDependentTask(self.date) def run(self): with self.output().open('w') as output: with self.input().open('r') as input: for line in input: ret = do_something(line) output.write(ret) output.write('\n') def output(self): return luigi.LocalTarget('./out2_{0}.txt'.format(self.date.isoformat())) class MyDepen

    Luigi逆引きリファレンス - Qiita
    sh19910711
    sh19910711 2020/12/12
    "PandasのDataFrameをoutputにしたい => outputのformatに luigi.format.Nop を指定してDataFrameをpickleして書き込む"
  • ヘルパを使ってLuigiワークフローの依存関係をスッキリ書こう! - ロコガイド テックブログ

    みなさん、ととのってますか〜? 最近サウナにどっぷりハマってしまった id:ar_tama です。このエントリは名古屋・栄のサウナラボで サ活 リモートワークをしながら書いています。 さて、最近ロコガイドでは社内の業務改善として、今まで手動で行っていた業務を自動化するプロジェクトが行われており、そのワークフロー管理にPython・Luigiを用いています。 日語では2016~2017年のエントリが多く見られ、最近のアップデートに関する(日語の)記述が少なく感じたため、何回かに分けて知見を書き溜めていこうと思います。 ※ このエントリは主にこちらの ドキュメント の焼き直し+αです。 更に理解が深まるはずなので、ぜひ併せて読んでみてください:) パラメータ爆発をなんとかしたい 以下の例(ドキュメントから抜粋)では、TaskCを起点としたワークフローで受け取ったパラメータを、TaskB→T

    ヘルパを使ってLuigiワークフローの依存関係をスッキリ書こう! - ロコガイド テックブログ
  • Python: データパイプライン構築用フレームワーク Luigi を使ってみる - CUBE SUGAR CONTAINER

    最近になって、バッチ処理においてデータパイプラインを組むためのフレームワークとして Luigi というものがあることを知った。 これは、Spotify という音楽のストリーミングサービスを提供する会社が作ったものらしい。 似たような OSS としては他にも Apache Airflow がある。 こちらは民宿サービスを提供する Airbnb が作ったものだけど、最近 Apache に寄贈されてインキュベータープロジェクトとなった。 Luigi の特徴としては、バッチ処理に特化している点が挙げられる。 ただし、定期的にバッチ処理を実行するような機能はない。 そこは、代わりに cronsystemd timer を使ってやる必要がある。 また、体もそうだけどデータパイプラインについても Python を使って書く必要がある。 今回は、そんな Luigi を一通り触ってみることにする。

    Python: データパイプライン構築用フレームワーク Luigi を使ってみる - CUBE SUGAR CONTAINER
  • Luigi+pytestによるテスト再実行の制御 - Qiita

    AdventarのPython Advent Calendar 2015 25日目の記事です。 はじめに 記事ではLuigiを用いたジョブパイプライン構築の簡単な実例として、Pytestのテスト再実行について記述する。 Luigiとは LuigiはPython製のジョブパイプライン構築ツールである。Luigiを用いることで、ジョブパイプライン構築に必要な以下の事柄をPythonコードで表現することができる。 タスクの実行 タスク間の依存関係 タスク実行結果の保存 HadoopやSparkのジョブ実行、データベースからの/へのデータロードなど、それなりに時間がかかるタスクを構成要素としたジョブパイプラインの構築をメインターゲットとしているようで、それらのツールと連携するためのモジュールはデフォルトでサポートされている(http://luigi.readthedocs.org/en/stab

    Luigi+pytestによるテスト再実行の制御 - Qiita
  • 【Python】Scrapy + Digdag でクローラの定期実行 |

    Scrapy プロジェクトを Digdag でスケジューリングしてみたので導入の備忘録を残しておきます。 環境は MacBook Air (13-inch, Mid 2013), OSX 10.11.6 です。 Scrapy は Web Crawling / Scraping Framework で, mechanize や Beautiful Soup といった特定の機能を提供するライブラリと比べると多機能。 基的な機能に加えて robots.txtポリシー, クロール間隔設定, リトライ処理, 並行処理, scrapydによるデーモン化 などもサポートしている。 Installation guide 通りで入ると思うが, 自分の環境 (OSX) では pip で上手くインストールできなかった。[1] 依存ライブラリやバージョンの不一致などの理由から conda でインストールを行う。