zenml-nightly 0.74.0.dev20250225__py3-none-any.whl → 0.74.0.dev20250226__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
zenml/VERSION CHANGED
@@ -1 +1 @@
1
- 0.74.0.dev20250225
1
+ 0.74.0.dev20250226
@@ -285,6 +285,28 @@ class StepLogsStorage:
285
285
  Args:
286
286
  force: whether to force a save even if the write conditions not met.
287
287
  """
288
+ import asyncio
289
+ import threading
290
+
291
+ # Most artifact stores are based on fsspec, which converts between
292
+ # sync and async operations by using a separate AIO thread.
293
+ # It may happen that the fsspec call itself will log something,
294
+ # which will trigger this method, which may then use fsspec again,
295
+ # causing a "Calling sync() from within a running loop" error, because
296
+ # the fsspec library does not expect sync calls being made as a result
297
+ # of a logging call made by itself.
298
+ # To avoid this, we simply check if we're running in the fsspec AIO
299
+ # thread and skip the save if that's the case.
300
+ try:
301
+ if (
302
+ asyncio.events.get_running_loop() is not None
303
+ and threading.current_thread().name == "fsspecIO"
304
+ ):
305
+ return
306
+ except RuntimeError:
307
+ # No running loop
308
+ pass
309
+
288
310
  if not self.disabled and (self._is_write_needed or force):
289
311
  # IMPORTANT: keep this as the first code line in this method! The
290
312
  # code that follows might still emit logging messages, which will
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: zenml-nightly
3
- Version: 0.74.0.dev20250225
3
+ Version: 0.74.0.dev20250226
4
4
  Summary: ZenML: Write production-ready ML code.
5
5
  License: Apache-2.0
6
6
  Keywords: machine learning,production,pipeline,mlops,devops
@@ -79,10 +79,12 @@ Requires-Dist: kfp (>=2.6.0) ; extra == "vertex"
79
79
  Requires-Dist: kubernetes (>=18.20.0) ; extra == "connectors-kubernetes" or extra == "connectors-aws" or extra == "connectors-gcp" or extra == "connectors-azure"
80
80
  Requires-Dist: maison (<2.0) ; extra == "dev"
81
81
  Requires-Dist: mike (>=1.1.2,<2.0.0) ; extra == "dev"
82
- Requires-Dist: mkdocs (>=1.2.3,<2.0.0) ; extra == "dev"
82
+ Requires-Dist: mkdocs (>=1.4.0,<2.0.0) ; extra == "dev"
83
+ Requires-Dist: mkdocs-autorefs (>=0.4.1,<1.0.0) ; extra == "dev"
83
84
  Requires-Dist: mkdocs-awesome-pages-plugin (>=2.6.1,<3.0.0) ; extra == "dev"
84
- Requires-Dist: mkdocs-material (>=8.1.7,<9.0.0) ; extra == "dev"
85
- Requires-Dist: mkdocstrings (>=0.17.0,<0.18.0) ; extra == "dev"
85
+ Requires-Dist: mkdocs-material (>=9.0.0,<10.0.0) ; extra == "dev"
86
+ Requires-Dist: mkdocstrings (>=0.20.0,<1.0.0) ; extra == "dev"
87
+ Requires-Dist: mkdocstrings-python (>=1.1.0,<2.0.0) ; extra == "dev"
86
88
  Requires-Dist: mypy (==1.7.1) ; extra == "dev"
87
89
  Requires-Dist: orjson (>=3.10.0,<3.11.0) ; extra == "server"
88
90
  Requires-Dist: packaging (>=24.1)
@@ -144,8 +146,8 @@ Description-Content-Type: text/markdown
144
146
 
145
147
  <div align="center">
146
148
  <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=0fcbab94-8fbe-4a38-93e8-c2348450a42e" />
147
- <h1 align="center">Connecting data science teams seamlessly to cloud infrastructure.
148
- </h1>
149
+ <h1 align="center">Beyond The Demo: Production-Grade AI Systems</h1>
150
+ <h3 align="center">ZenML brings battle-tested MLOps practices to your AI applications, handling evaluation, monitoring, and deployment at scale</h3>
149
151
  </div>
150
152
 
151
153
  <!-- PROJECT SHIELDS -->
@@ -244,40 +246,44 @@ Take a tour with the guided quickstart by running:
244
246
  zenml go
245
247
  ```
246
248
 
247
- ## 🪄 Simple, integrated, End-to-end MLOps
249
+ ## 🪄 From Prototype to Production: AI Made Simple
248
250
 
249
- ### Create machine learning pipelines with minimal code changes
251
+ ### Create AI pipelines with minimal code changes
250
252
 
251
- ZenML is a MLOps framework intended for data scientists or ML engineers looking to standardize machine learning practices. Just add `@step` and `@pipeline` to your existing Python functions to get going. Here is a toy example:
253
+ ZenML is an open-source framework that handles MLOps and LLMOps for engineers scaling AI beyond prototypes. Automate evaluation loops, track performance, and deploy updates across 100s of pipelines—all while your RAG apps run like clockwork.
252
254
 
253
255
  ```python
254
256
  from zenml import pipeline, step
255
257
 
256
- @step # Just add this decorator
257
- def load_data() -> dict:
258
- training_data = [[1, 2], [3, 4], [5, 6]]
259
- labels = [0, 1, 0]
260
- return {'features': training_data, 'labels': labels}
258
+ @step
259
+ def load_rag_documents() -> dict:
260
+ # Load and chunk documents for RAG pipeline
261
+ documents = extract_web_content(url="https://www.zenml.io/")
262
+ return {"chunks": chunk_documents(documents)}
261
263
 
262
264
  @step
263
- def train_model(data: dict) -> None:
264
- total_features = sum(map(sum, data['features']))
265
- total_labels = sum(data['labels'])
266
-
267
- print(f"Trained model using {len(data['features'])} data points. "
268
- f"Feature sum is {total_features}, label sum is {total_labels}")
265
+ def generate_embeddings(data: dict) -> None:
266
+ # Generate embeddings for RAG pipeline
267
+ embeddings = embed_documents(data['chunks'])
268
+ return {"embeddings": embeddings}
269
269
 
270
- @pipeline # This function combines steps together
271
- def simple_ml_pipeline():
272
- dataset = load_data()
273
- train_model(dataset)
270
+ @step
271
+ def index_generator(
272
+ embeddings: dict,
273
+ ) -> str:
274
+ # Generate index for RAG pipeline
275
+ index = create_index(embeddings)
276
+ return index.id
277
+
274
278
 
275
- if __name__ == "__main__":
276
- run = simple_ml_pipeline() # call this to run the pipeline
277
-
279
+ @pipeline
280
+ def rag_pipeline() -> str:
281
+ documents = load_rag_documents()
282
+ embeddings = generate_embeddings(documents)
283
+ index = index_generator(embeddings)
284
+ return index
278
285
  ```
279
-
280
- ![Running a ZenML pipeline](/docs/book/.gitbook/assets/readme_basic_pipeline.gif)
286
+ ![Running a ZenML pipeline](/docs/book/.gitbook/assets/readme_simple_pipeline.gif)
281
287
 
282
288
  ### Easily provision an MLOps stack or reuse your existing infrastructure
283
289
 
@@ -329,18 +335,47 @@ def training(...):
329
335
 
330
336
  Create a complete lineage of who, where, and what data and models are produced.
331
337
 
332
- Youll be able to find out who produced which model, at what time, with which data, and on which version of the code. This guarantees full reproducibility and auditability.
338
+ You'll be able to find out who produced which model, at what time, with which data, and on which version of the code. This guarantees full reproducibility and auditability.
333
339
 
334
340
  ```python
335
341
  from zenml import Model
336
342
 
337
- @step(model=Model(name="classification"))
338
- def trainer(training_df: pd.DataFrame) -> Annotated["model", torch.nn.Module]:
339
- ...
343
+ @step(model=Model(name="rag_llm", tags=["staging"]))
344
+ def deploy_rag(index_id: str) -> str:
345
+ deployment_id = deploy_to_endpoint(index_id)
346
+ return deployment_id
340
347
  ```
341
348
 
342
349
  ![Exploring ZenML Models](/docs/book/.gitbook/assets/readme_mcp.gif)
343
350
 
351
+ ## 🚀 Key LLMOps Capabilities
352
+
353
+ ### Continual RAG Improvement
354
+ **Build production-ready retrieval systems**
355
+
356
+ <div align="center">
357
+ <img src="/docs/book/.gitbook/assets/rag_zenml_home.png" width="800" alt="RAG Pipeline">
358
+ </div>
359
+
360
+ ZenML tracks document ingestion, embedding versions, and query patterns. Implement feedback loops and:
361
+ - Fix your RAG logic based on production logs
362
+ - Automatically re-ingest updated documents
363
+ - A/B test different embedding models
364
+ - Monitor retrieval quality metrics
365
+
366
+ ### Reproducible Model Fine-Tuning
367
+ **Confidence in model updates**
368
+
369
+ <div align="center">
370
+ <img src="/docs/book/.gitbook/assets/finetune_zenml_home.png" width="800" alt="Finetuning Pipeline">
371
+ </div>
372
+
373
+ Maintain full lineage of SLM/LLM training runs:
374
+ - Version training data and hyperparameters
375
+ - Track performance across iterations
376
+ - Automatically promote validated models
377
+ - Roll back to previous versions if needed
378
+
344
379
  ### Purpose built for machine learning with integrations to your favorite tools
345
380
 
346
381
  While ZenML brings a lot of value out of the box, it also integrates into your existing tooling and infrastructure without you having to be locked in.
@@ -357,6 +392,14 @@ def train_and_deploy(training_df: pd.DataFrame) -> bento.Bento
357
392
 
358
393
  ![Exploring ZenML Integrations](/docs/book/.gitbook/assets/readme_integrations.gif)
359
394
 
395
+ ## 🔄 Your LLM Framework Isn't Enough for Production
396
+
397
+ While tools like LangChain and LlamaIndex help you **build** LLM workflows, ZenML helps you **productionize** them by adding:
398
+
399
+ ✅ **Artifact Tracking** - Every vector store index, fine-tuned model, and evaluation result versioned automatically
400
+ ✅ **Pipeline History** - See exactly what code/data produced each version of your RAG system
401
+ ✅ **Stage Promotion** - Move validated pipelines from staging → production with one click
402
+
360
403
  ## 🖼️ Learning
361
404
 
362
405
  The best way to learn about ZenML is the [docs](https://docs.zenml.io/). We recommend beginning with the [Starter Guide](https://docs.zenml.io/user-guide/starter-guide) to get up and running quickly.
@@ -441,13 +484,23 @@ Or, if you
441
484
  prefer, [open an issue](https://github.com/zenml-io/zenml/issues/new/choose) on
442
485
  our GitHub repo.
443
486
 
444
- ## ⭐️ Show Your Support
487
+ ## 📚 LLM-focused Learning Resources
445
488
 
446
- If you find ZenML helpful or interesting, please consider giving us a star on GitHub. Your support helps promote the project and lets others know that it's worth checking out.
489
+ 1. [LL Complete Guide - Full RAG Pipeline](https://github.com/zenml-io/zenml-projects/tree/main/llm-complete-guide) - Document ingestion, embedding management, and query serving
490
+ 2. [LLM Fine-Tuning Pipeline](https://github.com/zenml-io/zenml-projects/tree/main/llm-finetuning) - From data prep to deployed model
491
+ 3. [LLM Agents Example](https://github.com/zenml-io/zenml-projects/tree/main/llm-agents) - Track conversation quality and tool usage
447
492
 
448
- Thank you for your support! 🌟
493
+ ## 🤖 AI-Friendly Documentation with llms.txt
449
494
 
450
- [![Star this project](https://img.shields.io/github/stars/zenml-io/zenml?style=social)](https://github.com/zenml-io/zenml/stargazers)
495
+ ZenML implements the llms.txt standard to make our documentation more accessible to AI assistants and LLMs. Our implementation includes:
496
+
497
+ - Base documentation at [zenml.io/llms.txt](https://zenml.io/llms.txt) with core user guides
498
+ - Specialized files for different documentation aspects:
499
+ - [Component guides](https://zenml.io/component-guide.txt) for integration details
500
+ - [How-to guides](https://zenml.io/how-to-guides.txt) for practical implementations
501
+ - [Complete documentation corpus](https://zenml.io/llms-full.txt) for comprehensive access
502
+
503
+ This structured approach helps AI tools better understand and utilize ZenML's documentation, enabling more accurate code suggestions and improved documentation search.
451
504
 
452
505
  ## 📜 License
453
506
 
@@ -1,5 +1,5 @@
1
1
  zenml/README.md,sha256=827dekbOWAs1BpW7VF1a4d7EbwPbjwccX-2zdXBENZo,1777
2
- zenml/VERSION,sha256=zSzvVswwIzD3tSsA78NP_8AZNJtWkvKKmLed4ZMMYj0,19
2
+ zenml/VERSION,sha256=n_IJGeb0RH66CmOQbcKEAS5voks_xBKYRaXKI1Qb0m0,19
3
3
  zenml/__init__.py,sha256=SkMObQA41ajqdZqGErN00S1Vf3KAxpLvbZ-OBy5uYoo,2130
4
4
  zenml/actions/__init__.py,sha256=mrt6wPo73iKRxK754_NqsGyJ3buW7RnVeIGXr1xEw8Y,681
5
5
  zenml/actions/base_action.py,sha256=UcaHev6BTuLDwuswnyaPjdA8AgUqB5xPZ-lRtuvf2FU,25553
@@ -576,7 +576,7 @@ zenml/io/filesystem_registry.py,sha256=stujDg4a5k983WMwp3rj4Z4puiUco4REyVoIoMIpI
576
576
  zenml/io/local_filesystem.py,sha256=xQTZPT5cpooptUV8KiifxZojS6pWCv1-6UUxitUYb_E,7386
577
577
  zenml/logger.py,sha256=LMV2sMFQ-6JK9xEn6kEt1C9vAoQ0lwuHVM5XHIeKubE,6966
578
578
  zenml/logging/__init__.py,sha256=lnqbOa31wAHwPP5f8vZazOrUwnP2QviLiIVwxoAefD8,975
579
- zenml/logging/step_logging.py,sha256=L8Kruo9HfVoSIhHEjN6ls3Ywd6wk4w9rTvFipTWkkGA,17606
579
+ zenml/logging/step_logging.py,sha256=6QDfn4oN4h7D_M3RxkVre0NBYRou8IeVtk1vyO89tqQ,18551
580
580
  zenml/login/__init__.py,sha256=Evi7hq8tpUn57IM3iX3hYP0r8oIeEWUhS471TAOyVGs,644
581
581
  zenml/login/credentials.py,sha256=dl7qB0Xh-RY9mJsB1bQWCx_xwHisrv6mT5YddZvn0Ko,12707
582
582
  zenml/login/credentials_store.py,sha256=Hrkk8xzoLwK50Z0dZpjr-aCudUADQFMfzb-2r_vyJRo,23619
@@ -1280,8 +1280,8 @@ zenml/zen_stores/secrets_stores/sql_secrets_store.py,sha256=nEO0bAPlULBLxLVk-UTR
1280
1280
  zenml/zen_stores/sql_zen_store.py,sha256=L3PtBT-VULJVh4udD4eY4TbU_o1iEC23VyUh26uBo5Y,415902
1281
1281
  zenml/zen_stores/template_utils.py,sha256=EKYBgmDLTS_PSMWaIO5yvHPLiQvMqHcsAe6NUCrv-i4,9068
1282
1282
  zenml/zen_stores/zen_store_interface.py,sha256=vf2gKBWfUUPtcGZC35oQB6pPNVzWVyQC8nWxVLjfrxM,92692
1283
- zenml_nightly-0.74.0.dev20250225.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1284
- zenml_nightly-0.74.0.dev20250225.dist-info/METADATA,sha256=m6rLsnw-E4Kl_0cIfYAMQiKk3_pd5TRUIWeqqYL06AA,21643
1285
- zenml_nightly-0.74.0.dev20250225.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
1286
- zenml_nightly-0.74.0.dev20250225.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1287
- zenml_nightly-0.74.0.dev20250225.dist-info/RECORD,,
1283
+ zenml_nightly-0.74.0.dev20250226.dist-info/LICENSE,sha256=wbnfEnXnafPbqwANHkV6LUsPKOtdpsd-SNw37rogLtc,11359
1284
+ zenml_nightly-0.74.0.dev20250226.dist-info/METADATA,sha256=Kt71h9uwFZZLAkdOEla7Snde0AoZGAEj-eZtZn7tWYY,24274
1285
+ zenml_nightly-0.74.0.dev20250226.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
1286
+ zenml_nightly-0.74.0.dev20250226.dist-info/entry_points.txt,sha256=QK3ETQE0YswAM2mWypNMOv8TLtr7EjnqAFq1br_jEFE,43
1287
+ zenml_nightly-0.74.0.dev20250226.dist-info/RECORD,,