데이터 과학자들이 컨테이너에 관심을 가져야하는 이유 -이 지식으로 눈에 띄는 이유


“나는 모델을 훈련시키고, 데이터를 분석하고, 대시 보드를 만듭니다. 왜 컨테이너에 관심을 가져야합니까?”

데이터 과학의 세계를 처음 접하는 많은 사람들이 스스로이 질문을합니다. 그러나 노트북에서 완벽하게 실행되는 모델을 교육했다고 상상해보십시오. 그러나 다른 사람이 다른 라이브러리 버전을 사용하고 있기 때문에 다른 사람들이 액세스 할 때 클라우드에 오류 메시지가 계속 나타납니다.

이곳은 컨테이너가 작동하는 곳입니다. 머신 러닝 모델, 데이터 파이프 라인 및 개발 환경을 실행 위치에 관계없이 안정적이고 휴대 가능하며 확장 가능하게 만들 수 있습니다.

자세히 살펴 보겠습니다.

내용 테이블에스
1 – 컨테이너 대 가상 머신 : 컨테이너가 VM보다 유연한 이유
2 – 컨테이너 및 데이터 과학 : 컨테이너가 정말로 필요합니까? 그리고 대답이 예인 4 가지 이유.
3 – 첫 번째 연습, 그런 다음 이론 : 사전 지식이없는 컨테이너 생성
4 – 당신의 101 치트 시트 : 가장 중요한 Docker 명령 및 개념은 한 눈에
최종 생각 : 데이터 과학자로서의 주요 테이크 아웃
어디에서도 계속 배울 수 있습니까?

1 – 컨테이너 대 가상 머신 : 컨테이너가 VM보다 유연한 이유

컨테이너는 가볍고 고립 된 환경입니다. 여기에는 모든 종속성이있는 응용 프로그램이 포함되어 있습니다. 또한 호스트 운영 체제의 커널을 공유하여 빠르고 휴대용이며 리소스 효율적입니다.

나는 ‘VMS (Virtual Machines) 및’데이터 과학 신생을위한 가상화 및 컨테이너 ‘에서 가상화에 대해 광범위하게 글을 썼습니다. 그러나 가장 중요한 것은 VMS가 완전한 컴퓨터를 시뮬레이션하고 하이퍼 바이저에 자체 커널을 사용하여 자체 운영 체제를 가지고 있다는 것입니다. 이것은 더 많은 자원이 필요하지만 더 큰 고립을 제공한다는 것을 의미합니다.

컨테이너와 VM은 모두 가상화 기술입니다.

둘 다 고립 된 환경에서 응용 프로그램을 실행할 수있게합니다.

그러나 두 가지 설명에서 가장 중요한 차이점도 볼 수 있습니다.

  • 아키텍처 : 각 VM에는 자체 운영 체제 (OS)가 있으며 하이퍼 바이저에서 실행되지만 컨테이너는 호스트 운영 체제의 커널을 공유합니다. 그러나 컨테이너는 여전히 서로 분리되어 작동합니다. 하이퍼 바이저는 VMS를 관리하고 물리적 하드웨어에서 VM의 운영 체제를 추상화하는 소프트웨어 또는 펌웨어 계층입니다. 따라서 단일 실제 서버에서 여러 VM을 실행할 수 있습니다.
  • 자원 소비 : 각 VM에는 완전한 OS가 포함되어 있으므로 많은 메모리와 CPU가 필요합니다. 반면에 컨테이너는 호스트 OS를 공유하기 때문에 더 가벼워집니다.
  • 이식성 : 기본 하드웨어에 의존하는 특정 드라이버 및 구성이있는 자체 운영 체제가 필요하기 때문에 다양한 환경에 대해 VM을 사용자 정의해야합니다. 반면에 컨테이너는 한 번만 만들 수 있으며 컨테이너 런타임 (Linux, Windows, Cloud, On-Premise)을 사용할 수있는 곳 어디에서나 실행할 수 있습니다. 컨테이너 런타임은 컨테이너를 생성, 시작 및 관리하는 소프트웨어입니다. 가장 잘 알려진 예는 Docker입니다.
저자가 만든

새로운 ML 모델을 테스트하거나 데이터 파이프 라인을 설정하든 Docker로 더 빨리 실험 할 수 있습니다. 컨테이너에 모든 것을 포장하고 즉시 실행할 수 있습니다. 그리고 당신은“내 기계에서 작동한다”-문제가 없습니다. 컨테이너는 어디에서나 똑같이 실행되므로 간단히 공유 할 수 있습니다.

2 – 컨테이너 및 데이터 과학 : 컨테이너가 정말로 필요합니까? 그리고 대답이 예인 4 가지 이유.

데이터 과학자로서 주요 작업은 데이터를 분석, 프로세스 및 모델 데이터를 분석, 프로세스 및 모델링하여 귀중한 통찰력과 예측을 얻는 것입니다.

물론 DevOps 엔지니어 또는 SRE (Site Reliability Engineer)와 컨테이너, Docker 또는 Kubernetes에 대한 심도있는 지식을 가질 필요는 없습니다. 그럼에도 불구하고, 기본 수준에서 컨테이너 지식을 갖는 것이 좋습니다. 이는 조만간 연락 할 곳의 4 가지 예이기 때문입니다.

모델 배포

당신은 모델을 훈련시키고 있습니다. 당신은 그것을 로컬로 사용하고 싶을뿐만 아니라 다른 사람들이 이용할 수있게합니다. 이렇게하려면 컨테이너에 포장하여 REST API를 통해 사용할 수 있습니다.

구체적인 예를 살펴 보겠습니다. 훈련 된 모델은 Fastapi 또는 Flask가있는 Docker 컨테이너에서 실행됩니다. 서버는 요청을 수신하고 데이터를 처리하며 ML 예측을 실시간으로 반환합니다.

재현성과 더 쉬운 협업

ML 모델과 파이프 라인에는 특정 라이브러리가 필요합니다. 예를 들어, 변압기와 같은 딥 러닝 모델을 사용하려면 Tensorflow 또는 Pytorch가 필요합니다. 클래식 머신 러닝 모델을 교육하고 평가하려면 Scikit-Learn, Numpy 및 Pandas가 필요합니다. Docker 컨테이너는 이제 모든 컴퓨터, 서버 또는 클라우드에서 코드가 정확히 동일한 종속성으로 실행되도록합니다. 또한 Jupyter 노트북 환경을 컨테이너로 배포하여 다른 사람들이 액세스하고 정확히 동일한 패키지 및 설정을 사용할 수 있도록 할 수 있습니다.

클라우드 통합

컨테이너에는 응용 프로그램에 필요한 모든 패키지, 종속성 및 구성이 포함됩니다. 따라서 로컬 컴퓨터, 서버 또는 클라우드 환경에서 균일하게 실행됩니다. 이것은 당신이 환경을 재구성 할 필요가 없다는 것을 의미합니다.

예를 들어, 데이터 파이프 라인 스크립트를 작성합니다. 이것은 당신을 위해 로컬로 작동합니다. 컨테이너로 배포하자마자 AWS, Azure, GCP 또는 IBM 클라우드에서 정확히 동일한 방식으로 실행되도록 할 수 있습니다.

Kubernetes로 스케일링

Kubernetes는 컨테이너를 조정하는 데 도움이됩니다. 그러나 아래에서 더. 이제 ML 모델에 대한 많은 요청을 받으면 Kubernetes로 자동으로 확장 할 수 있습니다. 이것은 컨테이너의 더 많은 인스턴스가 시작되었음을 의미합니다.

3 – 첫 번째 연습, 그런 다음 이론 : 사전 지식이없는 컨테이너 생성

Docker와 컨테이너에 대해 많이 듣지 않더라도 누구나 최소한의 시간을 보낼 수 있다는 예를 살펴 보겠습니다. 30 분이 걸렸습니다.

Docker 컨테이너 안에 Jupyter 노트북을 설정하여 휴대용 재현 가능한 데이터 과학 환경을 만듭니다. 일단 가동되면 우리는 다른 사람들과 쉽게 공유하고 모든 사람이 동일한 설정으로 작업 할 수 있도록 할 수 있습니다.

0 – Docker Dekstop을 설치하고 프로젝트 디렉토리 생성

컨테이너를 사용할 수 있으려면 Docker Desktop이 필요합니다. 이를 위해 공식 웹 사이트에서 Docker Desktop을 다운로드합니다.

이제 프로젝트를위한 새 폴더를 만듭니다. 원하는 폴더에서 직접이를 수행 할 수 있습니다. Windows + R과 CMD를 열면 터미널을 통해이 작업을 수행합니다.

다음 명령을 사용합니다.

저자가 취한 스크린 샷

1. Dockerfile을 만듭니다

이제 우리는 대 코드 또는 다른 편집기를 열고 ‘dockerfile’이라는 이름의 새 파일을 만듭니다. 동일한 디렉토리에서 확장 없이이 파일을 저장합니다. 왜 확장이 필요하지 않습니까?

이 파일에 다음 코드를 추가합니다.

# Use the official Jupyter notebook image with SciPy
FROM jupyter/scipy-notebook:latest  

# Set the working directory inside the container
WORKDIR /home/jovyan/work  

# Copy all local files into the container
COPY . .

# Start Jupyter Notebook without token
CMD ["start-notebook.sh", "--NotebookApp.token=''"]

따라서 우리는 공식 Jupyter Scipy Notebook 이미지를 기반으로하는 Jupyter 노트북 용 컨테이너 환경을 정의했습니다.

먼저, 우리는 정의합니다 FROM 기본 이미지에는 컨테이너가 제작되었습니다. jupyter/scipy-notebook:latest 미리 구성된 Jupyter 노트북 이미지이며 Numpy, Sipy, Matplotlib 또는 Pandas와 같은 라이브러리가 포함되어 있습니다. 또는 여기서는 다른 이미지를 사용할 수도 있습니다.

와 함께 WORKDIR 작업 디렉토리를 컨테이너 내에 설정했습니다. /home/jovyan/work Jupyter가 사용하는 기본 경로입니다. 사용자 jovyan Jupyter Docker Images의 기본 사용자입니다. 다른 디렉토리도 선택할 수 있지만이 디렉토리는 Jupyter 컨테이너의 모범 사례입니다.

와 함께 COPY . . 로컬 디렉토리의 모든 파일을 복사합니다.이 경우 Dockerfile은 jupyter-docker 디렉토리 – 작업 디렉토리에 /home/jovyan/work 컨테이너에서.

와 함께 CMD [“start-notebook.sh”, “ — NotebookApp.token=‘’’”] 컨테이너의 기본 시작 명령을 지정하고 Jupyter Notebook의 시작 스크립트를 지정하고 노트북이 토큰없이 시작되었음을 정의합니다.이를 통해 브라우저를 통해 직접 액세스 할 수 있습니다.

2. Docker 이미지를 만듭니다

다음으로 Docker 이미지를 작성합니다. 이전에 설치된 Docker Desktop이 열려 있는지 확인하십시오. 이제 터미널로 돌아가 다음 명령을 사용합니다.

cd jupyter-docker
docker build -t my-jupyter .

와 함께 cd jupyter-docker 이전에 만든 폴더로 이동합니다. 와 함께 docker build 우리는 dockerfile에서 docker 이미지를 만듭니다. 와 함께 -t my-jupyter 우리는 이미지에 이름을줍니다. 도트는 이미지가 현재 디렉토리를 기반으로 구축 될 것임을 의미합니다. 그게 무슨 뜻입니까? 이미지 이름과 점 사이의 공간에 주목하십시오.

Docker 이미지는 컨테이너의 템플릿입니다. 이 이미지에는 운영 체제 기반 (예 : Ubuntu, Python, Jupyter), Pandas, Numpy, Jupyter Notebook, 응용 프로그램 코드 및 시작 명령과 같은 응용 프로그램에 필요한 모든 것이 포함되어 있습니다. Docker 이미지를 “빌드”할 때 Docker가 Dockerfile을 읽고 정의한 단계를 실행한다는 것을 의미합니다. 그런 다음이 템플릿 (Docker Image)에서 컨테이너를 시작할 수 있습니다.

이제 터미널에 Docker 이미지가 내장되는 것을 볼 수 있습니다.

저자가 취한 스크린 샷

우리는 사용합니다 docker images 이미지가 존재하는지 확인합니다. 출력 인 경우 my-jupyter 제작이 성공적이었습니다.

docker images

그렇다면 생성 된 Docker 이미지에 대한 데이터가 나타납니다.

저자가 취한 스크린 샷

3. Jupyter 컨테이너를 시작하십시오

다음으로 컨테이너를 시작 하고이 명령을 사용하여 그렇게하려고합니다.

docker run -p 8888:8888 my-jupyter

우리는 컨테이너를 시작합니다 docker run. 먼저 시작하려는 컨테이너의 특정 이름을 입력합니다. 그리고 함께 -p 8888:8888 우리는 로컬 포트 ​​(8888)를 컨테이너 (8888)의 포트와 연결합니다. Jupyter는이 포트에서 실행됩니다. 나는 이해하지 못한다.

또는 Docker Desktop 에서이 단계를 수행 할 수도 있습니다.

저자가 취한 스크린 샷

4. Jupyter Notebook을 열고 테스트 노트를 만듭니다

이제 URL을 열었습니다 [ the browser. You should now see the Jupyter Notebook interface.

Here we will now create a Python 3 notebook and insert the following Python code into it.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y)
plt.title("Sine Wave")
plt.show()

Running the code will display the sine curve:

Screenshot taken by the author

5. Terminate the container

At the end, we end the container either with ‘CTRL + C’ in the terminal or in Docker Desktop.

With docker ps we can check in the terminal whether containers are still running and with docker ps -a we can display the container that has just been terminated:

Screenshot taken by the author

6. Share your Docker image

If you now want to upload your Docker image to a registry, you can do this with the following command. This will upload your image to Docker Hub (you need a Docker Hub account for this). You can also upload it to a private registry of AWS Elastic Container, Google Container, Azure Container or IBM Cloud Container.

docker login

docker tag my-jupyter your-dockerhub-name/my-jupyter:latest

docker push dein-dockerhub-name/mein-jupyter:latest

If you then open Docker Hub and go to your repositories in your profile, the image should be visible.

This was a very simple example to get started with Docker. If you want to dive a little deeper, you can deploy a trained ML model with FastAPI via a container.

4 — Your 101 Cheatsheet: The most important Docker commands & concepts at a glance

You can actually think of a container like a shipping container. Regardless of whether you load it onto a ship (local computer), a truck (cloud server) or a train (data center) — the content always remains the same.

The most important Docker terms

  • Container: Lightweight, isolated environment for applications that contains all dependencies.
  • Docker: The most popular container platform that allows you to create and manage containers.
  • Docker Image: A read-only template that contains code, dependencies and system libraries.
  • Dockerfile: Text file with commands to create a Docker image.
  • Kubernetes: Orchestration tool to manage many containers automatically.

The basic concepts behind containers

  • Isolation: Each container contains its own processes, libraries and dependencies
  • Portability: Containers run wherever a container runtime is installed.
  • Reproducibility: You can create a container once and it runs exactly the same everywhere.

The most basic Docker commands

docker --version # Check if Docker is installed
docker ps # Show running containers
docker ps -a # Show all containers (including stopped ones)
docker images # List of all available images
docker info # Show system information about the Docker installation

docker run hello-world # Start a test container
docker run -d -p 8080:80 nginx # Start Nginx in the background (-d) with port forwarding
docker run -it ubuntu bash # Start interactive Ubuntu container with bash

docker pull ubuntu # Load an image from Docker Hub
docker build -t my-app . # Build an image from a Dockerfile

Final Thoughts: Key takeaways as a data scientist

👉 With Containers you can solve the “It works on my machine” problem. Containers ensure that ML models, data pipelines, and environments run identically everywhere, independent of OS or dependencies.

👉 Containers are more lightweight and flexible than virtual machines. While VMs come with their own operating system and consume more resources, containers share the host operating system and start faster.

👉 There are three key steps when working with containers: Create a Dockerfile to define the environment, use docker build to create an image, and run it with docker run — optionally pushing it to a registry with docker push.

And then there’s Kubernetes.

A term that comes up a lot in this context: An orchestration tool that automates container management, ensuring scalability, load balancing and fault recovery. This is particularly useful for microservices and cloud applications.

Before Docker, VMs were the go-to solution (see more in ‘Virtualization & Containers for Data Science Newbiews’.) VMs offer strong isolation, but require more resources and start slower.

So, Docker was developed in 2013 by Solomon Hykes to solve this problem. Instead of virtualizing entire operating systems, containers run independently of the environment — whether on your laptop, a server or in the cloud. They contain all the necessary dependencies so that they work consistently everywhere.

I simplify tech for curious minds🚀 If you enjoy my tech insights on Python, data science, Data Engineering, machine learning and AI, consider subscribing to my substack.

Where Can You Continue Learning?



출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다