Skip to content

Commit

Permalink
docs: Update chapter names to reflect productionizing phase
Browse files Browse the repository at this point in the history
  • Loading branch information
fmind committed May 14, 2024
1 parent 52c978e commit c3c459b
Show file tree
Hide file tree
Showing 13 changed files with 18 additions and 7 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Whether you are a beginner eager to explore or an experienced professional seeki

1. **Initializing**: Set up your development environment, manage Python versions, and handle external dependencies.
2. **Prototyping**: Use Jupyter notebooks for ML prototyping, explore dataset manipulation, and perform initial model assessments.
3. **Refactoring**: Transition from notebooks to clean Python packages, learn about modular coding, and understand different programming paradigms.
3. **Productionizing**: Transition from notebooks to clean Python packages, learn about modular coding, and understand different programming paradigms.
4. **Validating**: Focus on code quality with typing, linting, testing, and debugging to ensure your ML projects are robust and maintainable.
5. **Refining**: Dive into advanced MLOps techniques including CI/CD workflows, software containers, and model registries to streamline your operations.
6. **Sharing**: Learn how to effectively organize and document your MLOps projects to ensure they are accessible and collaborative.
Expand Down
2 changes: 1 addition & 1 deletion docs/0. Overview/0.0. Course.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ The course is divided into six in-depth chapters, each focusing on different fac

1. **[Initializing](../../1. Initializing/)**: Go through the necessary tools and platforms for your development environment.
2. **[Prototyping](../../2. Prototyping/)**: Start with notebooks to dive into data science projects and pinpoint viable solutions.
3. **[Refactoring](../../3. Refactoring/)**: Transform your prototype into a neatly organized Python package, complete with scripts, configurations, and documentation.
3. **[Productionizing](../../3. Productionizing/)**: Transform your prototype into a neatly organized Python package, complete with scripts, configurations, and documentation.
4. **[Validating](../../4. Validating/)**: Adopt practices like typing, linting, testing, and logging to refine code quality.
5. **[Refining](../../5. Refining/)**: Leverage advanced software development techniques and tools to polish your project.
6. **[Sharing](../../6. Sharing/)**: Foster a productive team environment for effective contributions and communication.
Expand Down
2 changes: 1 addition & 1 deletion docs/1. Initializing/1.3. Poetry.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ requests = "^2.25.1"
pytest = "^5.2"
```

You will learn more on how to construct and publish Python Package in the [Package section of this course](../3. Refactoring/3.0. Package.md).
You will learn more on how to construct and publish Python Package in the [Package section of this course](../3. Productionizing/3.0. Package.md).

## Why do you need a package manager?

Expand Down
11 changes: 11 additions & 0 deletions docs/2. Prototyping/2.0. Notebooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,17 @@ Even seasoned users can benefit from reviewing this chapter. It introduces advan

Organizing your Python notebooks is key for efficiently converting them into Python packages, which is essential for scaling AI/ML projects. A well-structured notebook enhances productivity by simplifying maintenance, understanding, and debugging of the code. Proper organization involves using [Markdown headers](https://www.markdownguide.org/basic-syntax/#headings) to divide the notebook into clear, logical sections, which not only facilitates code reuse and adaptation but also improves collaboration by making the notebooks easier to navigate and understand for all team members.

## Should you save notebook outputs in your git repository?

Saving notebook outputs in your Git repository is generally not recommended due to several reasons:
- **Version Control**: Storing outputs in the repository can bloat the repository size, making it slower to clone and more cumbersome to manage.
- **Reproducibility**: Including outputs can make it harder to reproduce the notebook's results, as the outputs may change over time or across different environments.
- **Confidentiality**: Outputs may contain sensitive information, such as data values or model predictions, that should not be shared publicly.
- **Collaboration**: Sharing outputs can lead to conflicts and confusion when multiple users work on the same notebook, as the outputs may not match the code execution.
- **Code Focus**: The primary focus of version control systems like Git is on tracking changes to code, not data or outputs. Including outputs can distract from the main purpose of the repository.

Instead of saving outputs directly in the repository, consider using tools like [Jupyter's nbconvert](https://nbconvert.readthedocs.io/en/latest/) to export notebooks to different formats (e.g., HTML, PDF) that can be shared on other platforms or included in documentation. You can also use [Jupyter's built-in cell tags](https://jupyterbook.org/interactive/hiding.html) to hide or exclude specific cells from the exported version, allowing you to control what information is shared while keeping the repository clean and focused on code.

## Notebook additional resources

- **[Notebook example from the MLOps Python Package](https://github.com/fmind/mlops-python-package/blob/main/notebooks/prototype.ipynb)**
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# 3. Refactoring
# 3. Productionizing

In this chapter, we'll explore key strategies for improving your Python codebase, making it more maintainable, scalable, and efficient. We'll also cover the pivotal transition from working in notebooks to structuring your code as a Python package, a crucial step for enhancing code quality and collaboration. From organizing your project into packages and modules, understanding programming paradigms, and setting up entry points, to managing configurations, documenting your work, and optimizing your development environment with VS Code, you'll learn practical tips to refine your Python projects. Let's dive into refining your Python skills and elevating your projects.

- **[3.0. Package](./3.0. Package.md)**: Learn how to organize and structure your Python codebase effectively for better modularity and maintainability.
- **[3.1. Modules](./3.1. Modules.md)**: Dive into the organization of Python files into modules for cleaner, more scalable code.
- **[3.2. Paradigms](./3.2. Paradigms.md)**: Explore various programming paradigms (OOP, functional programming) and their applications in Python refactoring.
- **[3.2. Paradigms](./3.2. Paradigms.md)**: Explore various programming paradigms (OOP, functional programming) and their applications in putting Python in production.
- **[3.3. Entrypoints](./3.3. Entrypoints.md)**: Understand the significance of entry points in managing the execution flow of your Python applications.
- **[3.4. Configurations](./3.4. Configurations.md)**: Master the art of externalizing configurations to make your Python projects more flexible and environment-agnostic.
- **[3.5. Documentations](./3.5. Documentations.md)**: Emphasize the importance of thorough documentation to enhance code understandability and maintainability.
- **[3.6. VS Code Workspace](./3.6. VS Code Workspace.md)**: Optimize your development environment using Visual Studio Code for Python refactoring and better productivity.
- **[3.6. VS Code Workspace](./3.6. VS Code Workspace.md)**: Optimize your development environment using Visual Studio Code for Python programming and better productivity.
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The first chapter focuses on the initialization phase, which is crucial for sett

This chapter dives into the prototyping phase, a critical stage where various approaches are tested to identify the most effective solutions, usually with notebooks. We cover essential tools and practices that improve the efficiency of this process, helping you understand the problem and experiment with different models before finalizing the project architecture.

## [Chapter 3: Refactoring](./3. Refactoring/)
## [Chapter 3: Productionizing](./3. Productionizing/)

Learn to refine your Python codebase for better maintainability, scalability, and efficiency in Chapter 3. This includes transitioning from notebooks to structured Python packages, understanding different programming paradigms, and optimizing your development environment. These practices are crucial for enhancing code quality and collaboration.

Expand Down

0 comments on commit c3c459b

Please sign in to comment.