r/mlops

I built RunTrace, a small local-first CLI for preserving the context behind ML experiments — looking for honest feedback
▲ 3 r/mlops+1 crossposts

I built RunTrace, a small local-first CLI for preserving the context behind ML experiments — looking for honest feedback

Hi r/mlops,

I’m a student working on machine-learning experiments, and I kept running into a very ordinary problem: after several runs, I could no longer answer exactly which Git commit, configuration, and Python environment had produced a particular result.

I built RunTrace to address that problem.

RunTrace is a small, open-source, local-first Python CLI that records the reproducibility context around an experiment. Its scope is intentionally narrow: it is not trying to replace MLflow, Weights & Biases, or another full experiment-tracking platform.

It currently records:

  • Git commit, branch, detached-HEAD state, and dirty state
  • Python, operating system, architecture, and installed package versions
  • Optional NVIDIA GPU, driver, and CUDA information
  • A YAML configuration file, its SHA-256 hash, and its parsed values
  • The command associated with the experiment

A typical workflow looks like this:

pip install ml-runtrace

ml-runtrace init

ml-runtrace snapshot \
  --name baseline \
  --config config.yaml \
  --command "python train.py --config config.yaml"

ml-runtrace list
ml-runtrace show <run-id>
ml-runtrace diff <run-a> <run-b>

Snapshots are stored locally as readable YAML files under .runtrace/runs/. There is no account, server, or automatic upload.

There are also some deliberate limitations:

  • It does not execute the recorded command.
  • It does not currently track metrics, checkpoints, or model artifacts.
  • It records that a Git working tree is dirty, but it does not save source patches.
  • Explicit configuration values are stored in the snapshot, so users should inspect a snapshot before sharing it.

The project is still early, and I am trying not to add features without understanding whether they solve a real problem.

I would particularly appreciate feedback on these questions:

  1. Does this solve a useful gap, or is it too narrow compared with existing workflows?
  2. Is readable local YAML a sensible storage default?
  3. What missing metadata or edge cases would prevent you from using it?
  4. Is the init → snapshot → list/show → diff workflow understandable?

GitHub:

https://github.com/Corvus-226/RunTrace

Development note: I used Codex as a coding assistant during implementation. I handled the project scope, reviewed the changes, and managed the issue, pull-request, testing, CI, and release decisions. I am mentioning this because I would rather be transparent about how the project was built.

Critical feedback is genuinely welcome. If the idea is redundant, the defaults are wrong, or part of the workflow is unnecessarily complicated, I would rather learn that now than keep expanding it in the wrong direction.

u/CooOorvus — 22 hours ago
▲ 2 r/mlops

MLOps Project

Hey Everyone,

Currently working on a project where I built a system to determine if a clothing item is machine washable or not. Containerized and deployed to AWS to automate scraping and model retraining. Trying to finish up the backend and frontend, and I'm thinking of integrating Grafana and Prometheus. Might post on LinkedIn after (I'm currently job hunting), but posting on linkedin is so embarrassing to me lmao. Let me know what you think. Feedback would be appreciated. Thanks!

Github Repo: https://github.com/sogofunmi/Dryclean-or-No-Dryclean

u/Longjumping_Poetry15 — 22 hours ago
▲ 9 r/mlops+2 crossposts

Is there a "TypeScript for Python"? What you do for type checking!?

Conclusion: Thanks for the comments, everyone has been so helpful and generous with the suggestions. I realized that I did not asked my question properly and my main problem went unseen... (Well I'm at fault by opening the conversation by Is there a "TypeScript for Python"?).
I will create a new post with the right problem statement, but let me thank u/ProsodySpeaks, and u/JamzTyson which gave me idea on what to do next.

Cheers!

Hi, sorry for the basic question. I'm coming from strongly/statically typed languages (Kotlin, Go, Rust, etc.), and I was aware that Python is dynamically typed, but given how popular Python is, I expected its typing utilities (type hints + static type checkers) to provide something closer to TypeScript.

I'm working on an ml framework where the main interface has to be Python, and I ran into a magnitude of problem I was not expecting...

Requirements:

  • Type checking before a pipeline runs (no values exists yet, just type hints/annotations)
  • Type checking during the pipeline run (value and type hints/annotation should match)
  • The type hints are used to decide if pipeline components are compatible (similar to LangChain or similar frameworks)
  • Require as little setup as possible, so even junior engineers can use the framework safely.

I spent some time trying to implement this using Python's existing typing mechanisms. A few thousand lines of code later, I ended up with a type checker for my specific pipeline system:

https://github.com/trained-by-humans/ml-pipes/blob/main/packages/core/src/ml_pipes/validation.py

And my own type checking utilities:

https://github.com/trained-by-humans/ml-pipes/blob/main/packages/core/src/ml_pipes/_typing/annotation.py

But now I'm wondering:

Am I going way too far here? Is there a much more idiomatic Python approach that I'm completely missing?

And just to be clear: this is only the pre-run check so far. Runtime type checking doesn't exist yet.

Update1: Thanks for highlighting Pydantic, I've considered to use it for runtime since it covers enforcing type hint/annotation on values.

Update2: The TS or other "typing languages", would essentially help with highlighting the compatibility, they answers questions like is input of type A is assignable to parameter of type B, which is very very important for pipeline validation before running the pipeline.

Update3: The type of type checking I need is this, imagine a pipeline like this:

Pipeline([
    Resize((640, 640)),
    Store("resize_transform", source=1),
    Pick(0),
    Normalize(),
    Infer(model_path),
    Extract("output0", as_="preds"),
    Squeeze("preds"),
    Transpose("preds"),
    Slice("preds", slice(None, 4), as_="boxes"),
    Slice("preds", slice(4, None), as_="scores"),
    ArgMax("scores", as_="classes"),
    GatherRows("scores", "classes"),
    ConvertBoxFormat(from_="cxcywh"),
    NMS(conf_threshold=conf_threshold),
    Recall("resize_transform"),
    ProjectBoxes(),
    ToDetections(),
])

I need to make sure the upstream operator output is compatible with downstream input. You can find out more about it in the page (Validation.md under the operator compatibility section)

Please save me from implementing another few thousand lines of code. 😭

u/tenkei_01 — 1 day ago
▲ 8 r/mlops

Fresh grad, one year of experience. How did you pick a specialisation?

Stack: Python, FastAPI, Postgres, Kafka, Kubernetes on EKS with autoscaling, hosted model APIs, plus the eval and monitoring side. Shipped it and I run it.

So I've done production ML operationally, but always as a caller of models. Haven't worked below that line, no C++, no GPU work beyond a local side project.

A good amount of the development was AI-assisted, mostly Claude. Fine for shipping, but it's pushed me to want depth in something specific rather than more breadth.

Questions:

  1. For anyone on the serving side, what's the job like day to day?
  2. How much C++ is genuinely needed?
  3. Is the Kubernetes and autoscaling experience a real head start here, or a different skill set than I think?
  4. How did you end up in your area, planned or accidental?
reddit.com
u/Zestyclose-Pipe3258 — 1 day ago
▲ 2 r/mlops+3 crossposts

I deliberately sabotaged five of my own QLoRA runs to see if a training linter could catch them. Four got caught. One fooled it completely. Body:

I went to bed with a fine-tune running. Woke up eight hours later to a loss that had been NaN since step 300 — the whole night of GPU time gone, and nothing had told me. If you fine-tune, you've lived some version of this: the run that trained at learning-rate-zero the entire time, or quietly ate a dataset with 40 broken rows, and you only find out at the end.

So I built a deterministic linter for training runs — trainproof (pip install trainproof, MIT) — and then I spent days trying to prove it wrong.

One Qwen2.5-3B QLoRA, run five times: once clean, four times with exactly one thing sabotaged. Four it caught instantly. One fooled it completely — and that one taught me the most.

It wasn't the NaN run. It wasn't the fp16 overflow. It wasn't the learning rate cranked 100× too high (that spiked the gradient norm to 2650× the median — caught in seconds).

It was shuffled labels. Pure garbage — a dataset that literally cannot be learned.

That run reduced its loss by 62%. On the curve it looked like textbook-healthy training. It was learning absolutely nothing — just memorizing the statistics of noise, which any network will happily do. From its own loss curve it is indistinguishable from a real run. No single-run, loss-only rule can catch it. So instead of pretending my tool is magic, I wrote that limitation straight into the README — and added a compare mode, because the failure is visible the moment you put it next to a known-good run.

That's the whole philosophy: no ML judging ML, no "87%-confidence" scores. Every check is a deterministic rule that either fires or doesn't, and every finding cites the exact numbers behind it. When it can't be sure, it says so instead of guessing.

Across a run's life:

  • Before a single GPU-second — lints the dataset + tokenizer (malformed JSONL with the line number, empty rows, duplicates, missing eos_token, pad==eos, over-length samples). Exits non-zero → straight into CI.
  • During training — one-line HuggingFace callback. Warns by default; flip on stop_on_fail and it aborts a doomed run itself. In testing it killed a diverging run at step 20 of 300 — 93% of the scheduled steps never ran.
  • After — reads the log: diverged / flatlined / NaN'd / spiked.
  • vs a baseline — the ratio rules that catch the shuffled-labels case.

All five sabotaged runs' real logs ship in the repo (examples/gallery/) with a 15-run / 3-seed evidence matrix — reproduce every verdict yourself. Reads plain logs (HF trainer_state.json, Coqui, JSONL/CSV), doesn't import torch.

Repo: https://github.com/Mormolykos/trainproof · pip install trainproof

Honest question: what's burned your GPU hours? If a deterministic check would've saved you, tell me — it goes in, with credit.

u/CupGlass540 — 1 day ago
▲ 5 r/mlops

best platform for prompt management, evals, and observability? non tech teammates shouldnt need an engineer

currently running 3 different tools for prompts evals and observability and im looking to consolidate.

and also non tech teammates always need an engineer in the loop to change a prompt and it goes through a ticket system, and usually take more time than required. even when something breaks in prod we are  just switching dashboards to figure out what actually happened

already tried a few things. like we started storing prompts in db still meant building version  approval flow an d audit trail on top. config files in a cms got messy to tie back to observability…

already loooked at the obvious options

langsmith - observability is good but prompt management feels built for engineers and not cross functional teams, even evals dont feel like primary  focsu

orqai - covers all three together, non tech access feels more central ovver here, but newer so community and integrations still catching up

helicone - looks good for cost tracking and request logging but this isnt our current prob

promptlayer - prompt versioning is there, unsure about how deep evalss and observability actually goes

langfuse - good on tracing, nd the opensource is nice, but same problem like langsmith for non technical u sers

has anyone actually consolidated these three things into one platform. what are you using currently?

reddit.com
u/Accurate-Catch1836 — 1 day ago
▲ 5 r/mlops

LiteLLM 1.82.7 and 1.82.8 were malicious for about 40 minutes in March. Did anyone here actually check whether they pulled one?

Disclosure for rule 2: I work at InvisiRisk, we build CI/CD security tooling. No links to us below. Flairing this as Education rather than Tools since it isn't about our product, happy to switch if the mods prefer.

On March 24 two malicious LiteLLM releases went up on PyPI, 1.82.7 and 1.82.8, live about 40 minutes before they were pulled. Part of the wider TeamPCP campaign that started with a leaked Trivy automation token. FBI FLASH on it, TLP: CLEAR so it's shareable: https://www.ic3.gov/CSA/2026/260702.pdf

The mechanism is the part worth knowing if you run a gateway. The package shipped a .pth file, and Python executes those at interpreter startup rather than on import. So it didn't matter whether your code ever called litellm. If it was installed and any Python process started, it ran.

It took environment variables, SSH keys, cloud credentials, Kubernetes service account tokens, and provider API keys.

That last one is why I think this is an MLOps problem specifically. LiteLLM sits in front of everything by design, so that one process has your OpenAI key, your Anthropic key, your Bedrock creds, whatever else you route through it. Probably the highest-value place in an ML stack to land a credential stealer, and for 40 minutes it was also the easiest.

So: has anyone actually gone back and confirmed either way?

Most of the obvious checks don't work here. If you pin loosely, something like litellm>=1.82, and a build ran in that window, you got it. Resolved manifests get discarded, so "what did we install on March 24" is often unanswerable months later. And a .pth payload runs before anything a scanner treats as import time.

One thing that does work and is faster than lock file archaeology. CloudSEK put up a public lookup for this incident: https://exposure.cloudsek.com/ai-supply-chain-incident

Worth being precise about it, since it answers a different question. Version history tells you whether you pulled the bad package. The lookup tells you whether your secrets turned up in what the attackers actually collected. It's closer to an outcome, and a 30 second check.

A hit still isn't proof of compromise. The FBI advisory makes the same point, that finding the dependency doesn't prove the code ran. Treat it as a reason to go dig, not as an incident on its own. And if your org does show up, keep it out of this thread.

Curious whether anyone confirmed, and how. Lock file history? Registry pull logs? Or did you just rotate everything and skip the reconstruction?

reddit.com
u/DavidPulaski — 2 days ago
▲ 2 r/mlops

Open-source tool for tuning inference servers: 81 → 421 tok/s on RTX 5090, 257 → 490 tok/s on H100, cost down 81% / 48%

Hello everybody,

I built Profile to make inference tuning deterministic, and save us all time. v2.2 is out today.

It reads a live vLLM server's metrics, compares them against the GPU's roofline ceiling, and names the bottleneck with the exact flag to change.

You apply, it re-measures, and prints before/after on every metric. Regressions get labeled worse, not buried. It never touches the server: no restarts, no config writes, no synthetic load.

Two runs on record, both real SWE-Bench agent traffic, no synthetic benchmarks:

RTX 5090, muse-glimmer 30B, 4 iterations:

  • 81 → 421 tok/s at 25k ctx
  • $3.41 → $0.65 per 1M output tok
  • TTFT 224ms (p95 500ms) at end of run
  • 4.72 → 1.08 J/tok

H100 80GB, Qwen3.8-27B, 3 iterations:

  • 257 → 490 tok/s at 27k ctx
  • $3.23 → $1.69 per 1M output tok
  • TTFT 1.9s → 539ms (p95 4.2s → 1.9s)
  • 2.39 → 1.00 J/tok

The honest part: on the H100 I scaled agents 10 → 285 without fixing KV first. TTFT exploded to 172s. Profile labeled it worse, named KV pressure, and the fix (fp8 KV, ctx trim, seat cut 345 → 22) recovered the run.

Both journeys on video: https://jungledesh.github.io/profile/journeys.html

Note: vLLM only today, more engines next. Single GPU, NVIDIA or AMD; multi-GPU / TP is next on the roadmap.

If you run vLLM in prod, tell me what it names on your servers, and where it's wrong.

curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/jungledesh/profile/releases/latest/download/profile-installer.sh | sh

profile diagnose --url http://localhost:8000/metrics --duration 2m

GitHub: https://github.com/jungledesh/profile
Docs: https://jungledesh.github.io/profile/docs.html

reddit.com
u/Inevitable-Diet-1870 — 2 days ago
▲ 7 r/mlops

What do you use for AI observability when models silently drift?

Fine-tuned classification model, self-hosted, feeding a customer-facing flow. Every infra metric we track stayed healthy for three straight weeks. A support ticket is what actually told us something was wrong, a customer said the categorization felt off. Precision had drifted noticeably and nothing on any dashboard showed it.

The gap is specific. We observe the service, is it up, is it fast, but not the model, are its outputs still correct. Those are different signals and we'd conflated them. For teams who've built this out, what's the actual signal you alert on versus just review weekly?

reddit.com
u/InflationCorrect5244 — 2 days ago
▲ 1 r/mlops

Give me an real world Apache airflow task

Hey all,

I’m currently preparing for ML and data engineering roles and trying to get some real world experience.

If you could share me a task on airflow I can try to build by myself.

#airflow

reddit.com
u/Lalu_Prakash — 2 days ago
▲ 2 r/mlops

We benchmarked runtime MCP retrieval vs a mounted context data plane across 60 paired agent runs

Agent context retrieval is often treated as model behavior. In production, we found that it behaves more like a data-plane architecture decision.

We compared two approaches:

  • Retrieve Slack, Notion and Linear data through official MCP integrations during each agent run.
  • Pre-sync the permitted data and mount it into the agent sandbox as files.

The mounted implementation was Locality Cloud, which I work on.

The evaluation used 20 cross-application scenarios with three paired trials each. We ran six AWS t3.large instances, kept the agent harness, model, prompts and machines consistent, and performed 180 blind comparisons of the outputs.

Compared with runtime MCP retrieval, the mounted setup:

  • Produced the preferred answer in 70% of scenarios.
  • Reduced LLM costs by 27%.
  • Reduced end-to-end latency by 32%.
  • Required 61% fewer tool calls.
  • Used roughly 40% fewer tokens.

The traces suggest that the agents weren’t reasoning substantially faster. They were spending less time traversing application data.

In one scenario, the agent had to reconcile product launch risks across Slack, Linear, Notion and a Git repository. One evidence-gathering stage took roughly 0.3 seconds using parallel filesystem operations. The MCP setup spent about a minute on the same stage, making 21 calls with approximately 30 seconds of tool-call time.

The broader MLOps lesson for us is that mounted file system context isn’t simply a cache. It becomes a production data plane with its own requirements:

  • Freshness: changes need to arrive through webhooks, polling or a pre-run synchronization boundary. Staleness must be observable.
  • Permissions: each sandbox should receive only the sources and subtrees required for that run, without broad application credentials.
  • State: remote state, mounted state and the last synchronized state must be tracked separately so pulls, writes and conflicts are unambiguous.
  • Write review: agent edits should produce an inspectable operation plan before they are synchronized back to the source.
  • Recovery: interrupted writes need journaling, idempotency and explicit conflict handling rather than silent retries.

This architecture also creates new operational costs: connector maintenance, synchronization lag, storage, conflict resolution and recovery testing.

We still expect live APIs or MCP to be preferable for transactional actions, narrow lookups and data that cannot tolerate synchronization delay. The emerging pattern looks less like “files instead of MCP” and more like two planes:

  • A mounted context plane for broad, read-heavy discovery and synthesis.
  • A live action plane for transactional operations.

Locality Cloud is our managed implementation of the mounted context plane, with an on-premises option for organizations that need to keep the synchronization layer inside their environment.

Full details with analysis, traces and scenario-level results:

https://www.locality.dev/blog/locality-why-filesystems-perform-better-than-mcps-for-production-agents

How are teams operating production agents separating their context plane from their action plane? If you materialize application data before execution, how do you handle freshness, permissions and failed synchronization?

u/ml_guy1 — 2 days ago
▲ 13 r/mlops

Moving prompts out of three services finally made rollbacks easy

Our agent prompt had grown across multiple services. Each service owned a reasonable fragment at first. Over time they accumulated different defaults, tool descriptions, safety language and model parameters. Staging tested one combination. Production could render another depending on which service handled the request. Debugging prompt behavior became archaeology with deployment manifests.

We moved the shared logic into a prompt registry with immutable versions. A candidate prompt now gets one explicit ID, runs against a fixed dataset and moves through staging and production through environment promotion. The services reference the chosen version and attach that prompt ID to trace metadata.

We've been using Braintrust for prompt management and evaluation for the registry, experiment comparison, and production trace. Now when a new instruction increased toolcall failures, we could compare it against the previous version and roll back the environment pointer without rebuilding. 

There is still normal operational work. Access control matters. Prompt changes need review. Cached versions need clear invalidation behavior. But the rollback is now a small, observable configuration change instead of a coordinated deploy.

Has anyone found a clean way to keep prompt ownership flexible while making version promotion as disciplined as application releases?

reddit.com
u/Old-Sandwich6635 — 3 days ago
▲ 8 r/mlops+3 crossposts

I built UnFlow: a tool to help researchers with ML experimentation

I've been working on an open-source project called UnFlow:

https://github.com/UnFlow-Labs/mlunflow

The idea is pretty simple:

Most ML experiment tracking looks like a list of independent runs usually stored in a table:

run_001
run_002
run_003
run_004
...

But in practice, experiments are usually related.

You change the learning rate, then the number of epochs, then the model, then some preprocessing code. Eventually you have hundreds of runs, but it's surprisingly difficult to answer:

  • What actually changed between these two experiments?
  • Which experiments are essentially the same computation?
  • Have I already run this experiment before?
  • How did I get from experiment A to experiment B?
  • Can I navigate the history of my experiments rather than just search through runs?

Unflow simply detect code changes in a Python function (limitation that for it is just a single function) and arguments that are passed to this function to build a graph where nodes are "states" and edges are transformations "what has changed", a new state is not added to the graph or executed expect if it has a transformation.

The project is still early, so I'm much more interested in feedback than pretending this is a finished product.

I'm particularly curious about three things:

  1. Does the "experiments as a graph" abstraction make sense to you?
  2. Do you currently run into problems with duplicated/redundant experiments?
  3. If you could see the complete lineage of your ML experiments, what would you want to query or visualize?

Repo: https://github.com/UnFlow-Labs/mlunflow

I'd love to hear how other people currently manage experiment lineage and whether this solves a real problem for you.

u/ha2emnomer — 3 days ago
▲ 12 r/mlops

Are inference chips replacing GPUs? Investors seem to think so...

My original post got removed from another sub, so reposting here since I still wanna know what people think

Read a TechCrunch article recently talking about a $400M loan General Compute received using specialized SambaNova inference chips as collateral instead of GPUs. This surprised me because I'd always assumed GPUs were the obvious choice for this kind of financing.

There seems to be a shift from training-heavy infrastructure to inference-first workloads. This financing announcement got me thinking about whether investors are starting to put more weight on cost-efficient infra to run open-source AI models instead of just funding expensive frontier models from the big names. Investors are willing to back alternative hardware providers, which could put more pressure on Nvidia's dominance. Open-source models are clearly getting stronger. I'm curious whether this is the start of a bigger shift in how AI infrastructure gets financed and deployed.

u/jedevapenoob — 3 days ago
▲ 24 r/mlops+7 crossposts

Aquifer: Bounded Queues, Fairness, and Dynamic Pacing for AI Workloads

Aquifer is an open-source local control plane for AI workloads and MCP infrastructure. It provides durable queues, bounded concurrency, fairness controls, and dynamic pacing for bursty traffic patterns common in agent systems.

It also experiments with the Aqueduct Protocol, a stream and webhook-based coordination protocol that dynamically communicates flow state through headers, allowing clients to scale traffic up or down at a controlled pace instead of relying solely on static rate limits. The project also includes an encryption and identity protocol that uses public-key verification, reducing the need to store shared secrets in a database. The goal is to make agent and MCP traffic more resilient to overload, retries, and traffic spikes.

Repo: https://github.com/rjpruitt16/aquifer

u/Noobcreate — 4 days ago
▲ 15 r/mlops+2 crossposts

Making distributed PyTorch training slowdowns easier to spot

I have been working on TraceML, a local-first runtime diagnostics tool for PyTorch training.

The latest work is focused on distributed runs: making multi-rank / multi-node training easier to inspect after the run finishes. The idea is to produce a compact performance summary for each run, including:

- step time breakdown
- dataloader overhead
- compute vs wait time
- GPU memory behaviour
- rank skew / stragglers

The goal is more of a first-pass regression check: did this run get slower, and where?

For people running DDP/FSDP jobs: what distributed performance issues do you usually miss until too late?

If you have run into these kinds of issues, I would love feedback on what signals would make a distributed training summary actually useful.

Tool info: https://github.com/traceopt-ai/traceml

u/traceml-ai — 3 days ago
▲ 1 r/mlops

Evidence-based governor for coding agents — looking for people to try it and constructive feedback

I’ve been working on MARGINAL, an open-source governance layer for coding agents. If you use Codex, I’d really appreciate people trying it on real work and telling me where it helps, where it gets in the way, or where the design is wrong.

I’m especially interested in: technical criticism, bad cases, and reproducible failures.

The idea is simple: agents are good at taking actions, but not always good at deciding whether the next action is still worth the compute.

MARGINAL watches the trajectory and looks for things like repeated actions, weak progress, redundant verification, and low-value continuation. It can run in Shadow Mode first, so it observes and records what it would have done without blocking anything.

Current focus is reliability, not just token reduction.

A few core pieces:

  • local-first trajectory and evidence tracking
  • deterministic reason codes and hashes for decisions
  • governance overhead measurement
  • replay and benchmark support
  • Shadow Mode before enforcement
  • Earned Enforcement: MARGINAL has to prove it is reliable on a repo before it gets permission to block or redirect the agent
  • automatic fallback to Shadow Mode if confidence degrades

I’m also working on the next layer now: counterfactual evaluation and intervention regret.

The goal is to answer a harder question than “did MARGINAL stop something?”:

Would the agent actually have done better if MARGINAL had stayed out of the way?

That’s the part I think matters if this is going to be useful beyond being another loop detector or token limiter.

u/Positive-Captain-709 — 3 days ago
▲ 5 r/mlops

Currently looking into ray.io -- but is it still the way to go?

Is it still the way to go for modern distributed model training in deep learning? Was looking for the state-of-art for foundation model training to learn.

There is little talk on Reddit and Youtube about it, though. At least, this is my initial impression. Might be totally wrong.

reddit.com
u/Gamiozzz — 5 days ago
▲ 8 r/mlops

A batch job nobody killed burned $40K over three weeks and none of our monitoring saw it. How are you catching cost failures?

ML platform team of four. A misconfigured batch inference job in a dev account plus the data transfer around it burned about $40K over three weeks. Our observability is genuinely good, metrics, alerting, SLOs, and none of it fired because cost isn't a signal we watch. Cost Explorer lags a day and slicing it is miserable, so by the time finance asked, we were doing archaeology. Has anyone wired cost anomalies into their alerting the way you would any other production signal? Detection, ownership, postmortem?

reddit.com
u/Confident_Draw321 — 4 days ago
▲ 12 r/mlops+2 crossposts

What is our job as ML engineers now that agents are so good?

Letting an agent optimize a training run without me present usually beats what I would have done by hand, and often it would find more interesting (unfortunately) solutions than I would have tried.

So the question that I am trying to understand now -- what it means to properly write loops (or now graphs lol), and where my value actually is.

I started converging to the workflow where I would spend 1-2 hours carefully designing the optimization objective, goals and constraints, and then just let my Claude Code grind on it for days. I found it very important to have a clear separation of the evaluation code and the optimizable code. So that if I trust the evaluation and I know the agent can not change - I will trust the result the agent produced, so hallucinations is not a problem anymore.

I tried to formalize this philosophy in a skill + CLI library, where Claude helps me build a bulletprrof evaluation environment first (I call it a hill), and then the agent would "climb" it. Hills have a few mechanisms to make sure the agent can not just modify the evals mid-run. You can try it here: https://github.com/autolab-ai/hills (critical feedback is very welcome!).

Curious what everyone's thoughts are, where you see your place in todays workflows, how you design them etc? Do you think this foced separation of the evals and optimiable code is valuable?

u/Only_Management_1010 — 6 days ago