Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 115 additions & 42 deletions docs/1. Initializing/1.0. System.md
Original file line number Diff line number Diff line change
@@ -1,72 +1,145 @@
---
description: This section ensures your system is adequately prepared, outlining the essential prerequisites for installing and effectively running the necessary development tools. We'll discuss which operating systems are compatible, explore the recommended hardware specifications, and guide you through installing the essential software packages.
description: >
This section ensures your system is adequately prepared, outlining the
essential prerequisites for installing and effectively running the necessary
development tools. We'll discuss which operating systems are compatible,
explore the recommended hardware specifications, and guide you through
installing the essential software packages.
---

# 1.0. System
# ⚙️ 1.0. System

Before we dive into the exciting world of machine learning operations, it's crucial to ensure that your system is properly set up. A well-configured environment is foundational for a smooth learning experience, enabling you to focus on the concepts rather than troubleshooting technical issues. This section will guide you through the essential prerequisites, from operating system compatibility to hardware specifications and software installations.
Before we dive into the exciting world of machine learning operations, it's
crucial to ensure that your system is properly set up. A well-configured
environment is foundational for a smooth learning experience, enabling you to
focus on the concepts rather than troubleshooting technical issues. This section
will guide you through the essential prerequisites, from operating system
compatibility to hardware specifications and software installations.

## 💻 What system is recommended for this course?

This course is designed to be compatible with a variety of operating systems to ensure broad accessibility. Here are the recommended setups:
This course is designed to be compatible with a variety of operating systems to
ensure broad accessibility. Here are the recommended setups:

- **Operating Systems:**
- **Linux**
- **macOS**
- **Windows** with Subsystem for Linux (WSL) 2
- **Chromebook** with a model that supports Linux applications.
- **Linux**
- **macOS**
- **Windows** with Subsystem for Linux (WSL) 2
- **Chromebook** with a model that supports Linux applications.

## 🧪 Can you use [JupyterLab](https://jupyterlab.readthedocs.io/en/latest/) or [Google Colab](https://colab.google/) for this course?

While notebook environments like JupyterLab and Google Colab are excellent for experimentation and the initial stages of a project (as covered in the Prototyping chapter), this course is optimized for [Visual Studio Code (VS Code)](https://code.visualstudio.com/). VS Code provides a more comprehensive development environment that is better suited for the later stages of the MLOps lifecycle, which involve productionizing, validating, and refining code.

Here's a quick comparison of why VS Code is recommended for the full scope of this course:

| Feature | VS Code | JupyterLab / Google Colab |
| ------------------------ | ------------------------------------- | ------------------------------------ |
| **Integrated Terminal** | ✅ Yes | ❌ Limited or no direct access |
| **File System Navigation** | ✅ Yes | ❌ Limited and less intuitive |
| **Source Control (Git)** | ✅ Excellent integration | ❌ Basic or external integration |
| **Advanced Debugging** | ✅ Yes | ❌ Limited debugging capabilities |
| **Code Refactoring** | ✅ Extensive support | ❌ Basic or no support |
While notebook environments like JupyterLab and Google Colab are excellent for
experimentation and the initial stages of a project (as covered in the
Prototyping chapter), this course is optimized for
[Visual Studio Code (VS Code)](https://code.visualstudio.com/). VS Code provides
a more comprehensive development environment that is better suited for the later
stages of the MLOps lifecycle, which involve productionizing, validating, and
refining code.

Here's a quick comparison of why VS Code is recommended for the full scope of
this course:

| Feature | VS Code | JupyterLab / Google Colab |
| ------------------------ | -------------------------------------- | ------------------------------------ |
| **Integrated Terminal** | ✅ Yes | ❌ Limited or no direct access |
| **File System Navigation** | ✅ Yes | ❌ Limited and less intuitive |
| **Source Control (Git)** | ✅ Excellent integration | ❌ Basic or external integration |
| **Advanced Debugging** | ✅ Yes | ❌ Limited debugging capabilities |
| **Code Refactoring** | ✅ Extensive support | ❌ Basic or no support |
| **Full Project Lifecycle** | ✅ Ideal for development to production | ✅ Best for prototyping & analysis |

## 📦 Are additional software installations required?

Yes, a few key software installations are necessary to follow along with the course. These tools form the backbone of a modern development workflow:
Yes, a few key software installations are necessary to follow along with the
course. These tools form the backbone of a modern development workflow:

- **Python:** The primary programming language for all coding activities.
- **uv:** An extremely fast Python package installer and resolver, used for managing project dependencies efficiently.
- **Git:** The standard for version control, essential for tracking changes and collaborating on code.
- **VS Code:** The recommended Integrated Development Environment (IDE) for its powerful features and extensions.
- **uv:** An extremely fast Python package installer and resolver, used for
managing project dependencies efficiently.
- **Git:** The standard for version control, essential for tracking changes and
collaborating on code.
- **VS Code:** The recommended Integrated Development Environment (IDE) for its
powerful features and extensions.

Each of these tools is covered in detail in the upcoming sections of this chapter, with step-by-step installation guides.
Each of these tools is covered in detail in the upcoming sections of this
chapter, with step-by-step installation guides.

## ⚙️ What are the specific hardware requirements for MLOps projects?

The hardware required for MLOps projects can vary significantly based on the project's complexity and the type of data involved. Here’s a general guide:
The hardware required for MLOps projects can vary significantly based on the
project's complexity and the type of data involved. Here’s a general guide:

- **Basic Projects (e.g., Tabular Data):** For models using libraries like Scikit-learn or XGBoost, a standard local machine is usually sufficient. A GPU is generally not required but can be beneficial for certain models.
- **Intermediate Projects (e.g., Multimedia Data):** When working with images or video, using deep learning frameworks like TensorFlow or PyTorch, access to at least one GPU becomes highly beneficial for faster model training.
- **Advanced Projects (e.g., Large-Scale Models):** For projects involving large models like transformers or extensive parallel processing, you may need multiple GPUs, potentially distributed across several machines.
- **Basic Projects (e.g., Tabular Data):** For models using libraries like
Scikit-learn or XGBoost, a standard local machine is usually sufficient. A GPU
is generally not required but can be beneficial for certain models.
- **Intermediate Projects (e.g., Multimedia Data):** When working with images or
video, using deep learning frameworks like TensorFlow or PyTorch, access to at
least one GPU becomes highly beneficial for faster model training.
- **Advanced Projects (e.g., Large-Scale Models):** For projects involving large
models like transformers or extensive parallel processing, you may need
multiple GPUs, potentially distributed across several machines.

A practical approach is to start with a local setup for initial development and then scale to cloud-based resources as needed for more intensive training and deployment. Cloud platforms also enable running multiple experiments simultaneously, which can expedite the development process.
A practical approach is to start with a local setup for initial development and
then scale to cloud-based resources as needed for more intensive training and
deployment. Cloud platforms also enable running multiple experiments
simultaneously, which can expedite the development process.

## 🤔 Why System Setup Matters for MLOps?

A well-configured system is more than just a matter of convenience; it's a cornerstone of effective MLOps. Here’s why:

- **Reproducibility:** A consistent and well-documented setup ensures that your experiments are reproducible. This means you (or your teammates) can run the same code and get the same results, which is crucial for validating models and tracking progress.
- **Scalability:** As your projects grow in complexity, your system needs to be able to scale. A proper setup allows you to transition smoothly from local development to more powerful cloud-based resources without major overhauls.
- **Collaboration:** When working in a team, a standardized development environment ensures that everyone is on the same page. This minimizes the "it works on my machine" problem and streamlines the collaboration process.
- **Efficiency:** A properly configured system with the right tools can significantly boost your productivity. From faster package management to integrated debugging, a good setup lets you focus on building and deploying models, not fighting with your tools.
A well-configured system is more than just a matter of convenience; it's a
cornerstone of effective MLOps. Here’s why:

- **Reproducibility:** A consistent and well-documented setup ensures that your
experiments are reproducible. This means you (or your teammates) can run the
same code and get the same results, which is crucial for validating models and
tracking progress.
- **Scalability:** As your projects grow in complexity, your system needs to be
able to scale. A proper setup allows you to transition smoothly from local
development to more powerful cloud-based resources without major overhauls.
- **Collaboration:** When working in a team, a standardized development
environment ensures that everyone is on the same page. This minimizes the "it
works on my machine" problem and streamlines the collaboration process.
- **Efficiency:** A properly configured system with the right tools can
significantly boost your productivity. From faster package management to
integrated debugging, a good setup lets you focus on building and deploying
models, not fighting with your tools.

## ☁️ Is it possible to use cloud-based systems?

This course supports both local and [cloud-based development environments](../6. Sharing/6.5. Workstations.md), including options like [GitHub Codespaces](https://github.com/features/codespaces) and [Cloud Workstation](https://cloud.google.com/workstations). Cloud platforms offer considerable benefits, such as standardized development environments for easier team collaboration and enhanced security measures for your data. Nonetheless, it's crucial to understand any specific setup requirements and to manage resources effectively, especially when navigating the limitations of free tiers or usage quotas on these services.

## 📚 System additional resources

- **[GitHub Codespaces](https://github.com/features/codespaces):** A cloud-based development environment that allows you to code directly from your browser, with pre-configured setups for a seamless experience.
- **[Google Cloud Workstations](https://cloud.google.com/workstations):** A fully managed development environment on Google Cloud, offering a secure and scalable solution for remote development.
- **[MLOps Landscape in 2024: Top Tools and Platforms](https://neptune.ai/blog/mlops-tools-platforms-landscape):** A comprehensive overview of the current MLOps landscape, covering a wide range of tools and platforms that are shaping the industry.
This course supports both local and
[cloud-based development environments](../6. Sharing/6.5. Workstations.md),
including options like
[GitHub Codespaces](https://github.com/features/codespaces) and
[Cloud Workstation](https://cloud.google.com/workstations). Cloud platforms
offer considerable benefits, such as standardized development environments for
easier team collaboration and enhanced security measures for your data.
Nonetheless, it's crucial to understand any specific setup requirements and to
manage resources effectively, especially when navigating the limitations of free
tiers or usage quotas on these services.

## 🔑 Key Takeaways

- **Operating System**: Linux, macOS, or Windows with WSL 2 are recommended.
- **VS Code**: The primary IDE for this course, offering a comprehensive
development environment beyond what JupyterLab or Google Colab provide.
- **Essential Software**: Python, `uv`, Git, and VS Code are required and will
be covered in detail.
- **Hardware**: Varies by project complexity; start local, scale to cloud as
needed.
- **System Setup Importance**: Crucial for reproducibility, scalability,
collaboration, and efficiency in MLOps.
- **Cloud Support**: Cloud-based environments like GitHub Codespaces and Google
Cloud Workstations are supported.

## 📚 Additional Resources

- **[GitHub Codespaces](https://github.com/features/codespaces):** A cloud-based
development environment that allows you to code directly from your browser,
with pre-configured setups for a seamless experience.
- **[Google Cloud Workstations](https://cloud.google.com/workstations):** A
fully managed development environment on Google Cloud, offering a secure and
scalable solution for remote development.
- **[MLOps Landscape in 2024: Top Tools and Platforms](https://neptune.ai/blog/mlops-tools-platforms-landscape):**
A comprehensive overview of the current MLOps landscape, covering a wide range
of tools and platforms that are shaping the industry.
Loading