Migrate backend from raw REST API to PythonCall.jl + CondaPkg.jl
@pebeto がすでに取り組んでいます。
2026年3月24日 から。
評価
この issue はまだ評価されていません。
説明
Historically, MLFlowClient.jl has operated as a pure Julia wrapper around the MLflow REST API. However, keeping pace with MLflow's upstream development has become unsustainable.
While MLflow technically provides an OpenAPI/Swagger specification, their backend relies heavily on Protocol Buffers. In practice, this means the REST API frequently experiences undocumented changes, volatile internal endpoints (e.g., /ajax-api/), and inconsistent payload typing. Maintaining a manual HTTP/JSON mapping against a fast-moving, fundamentally Python-first ecosystem requires constant reverse-engineering and patches, which is no longer feasible for this package's long-term health.
I propose we move the core architecture of MLFlowClient.jl to act as an idiomatic Julia bridge to the official Python mlflow client, utilizing PythonCall.jl paired with CondaPkg.jl.
Workflow:
- CondaPkg.jl will automatically provision an isolated, invisible Python environment and install the mlflow package when a user installs MLFlowClient.jl. The user does not need to manage Python themselves
- PythonCall.jl will handle the zero-overhead data translation between Julia types and the underlying Python library
- End-users will still write pure Julia code (e.g., using do blocks instead of Python with context managers)
Considerations
Pros
- Parity: When MLflow releases new features (like recent LLM tracking or Model Registry updates), Julia users get access to them immediately without waiting for us to reverse-engineer the REST payloads
- Artifact logging: Uploading complex artifacts or models becomes significantly easier than raw HTTP multipart/form-data POST requests (a common issue in the history of the package)
- Reduction in tech debt: Reduced JSON serialization and HTTP boilerplate code
Cons
- No pure Julia: Python is now a dependency
- Startup latency: The Python environment will increase the package initialization time
@ablaom @deyandyankov
- 主要言語
- Julia
- スター
- 59
- フォーク
- 17
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドなし
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaAI/MLFlowClient.jl のほかの issue
-
tagbot-manual
難易度 1/5 1時間未満 初心者へのやさしさ 58/100
JuliaAI/MLFlowClient.jl#83 ·
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
JuliaAI/MLFlowClient.jl#45 · コメント 2 件 ·
-
enhancement help wanted
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
JuliaAI/MLFlowClient.jl#31 · コメント 8 件 ·
JuliaAI/MLFlowClient.jl の issue をすべて見る
似ている issue
-
backport 1.14 GC
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 1 日以内に返信
-
`binary_focal_loss` throws a `DomainError` when a negative sample has `ŷ = 1`対応中かも @parth-patel010 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
FluxML/Flux.jl#2818 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
JuliaDiff/TaylorSeries.jl#445 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
control-toolbox/CTActions#139 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
SciML/Optimization.jl#1448 ·
メンテナーはふだん 1 日以内に返信