티스토리 뷰

카테고리 없음

Kubeflow Central 1탄(개념공부)

미니대왕님 2024. 6. 3. 17:01

 

2024.06.03 - [분류 전체보기] - Kubeflow Central 1탄(개념공부)

2024.06.03 - [분류 전체보기] - Kubeflow Central 2탄(설치)

2024.06.07 - [분류 전체보기] - Kubeflow Central 3탄(설치)

 

시작하기전 주의사항!!

 

우선 CPU Master 는 8core , worknode중 한대는 8core 하시길 바랍니다. 

최소 메모리는 32G 로 사용하고 총 8G(최대) , 4G(최소) 하시길 바랍니다. 

Mysql 오류가 발생할수 있으니 반드시 PV 잘 미리 체크생성하시길 바랍니다. 

NFS 서버 생성하고 PVC PV 잘 이용하시길바랍니다. 

이상

 

1. Kubeflow Central 대시보드란 무엇인가요?

Kubeflow Central 대시보드는 Kubeflow 및 생태계 구성요소에 대해 인증된 웹 인터페이스를 제공합니다.

클러스터에서 실행되는 구성 요소의 UI를 노출하여 기계 학습 플랫폼 및 도구의 허브 역할을 합니다.

중앙 대시보드의 일부 핵심 기능은 다음과 같습니다.

2.Kubeflow 아키텍처 개요

이 가이드에서는 기계 학습(ML) 시스템을 개발하고 배포하기 위한 플랫폼인 Kubeflow를 소개합니다.

Kubeflow는 ML 파이프라인을 구축하고 실험하려는 데이터 과학자를 위한 플랫폼입니다.

Kubeflow는 개발, 테스트, 프로덕션 수준 서비스를 위해 다양한 환경에 ML 시스템을 배포하려는

ML 엔지니어 및 운영팀에게도 적합합니다.

Kubeflow 시작하기

다이어그램은 Kubernetes를 기반으로 ML 수명 주기의 각 단계를 다루는 주요 Kubeflow 구성 요소를 보여줍니다.

3. 개념적 개요

Kubeflow는 Kubernetes용 ML 툴킷 입니다 . 다음 다이어그램은 Kubernetes 위에 ML 시스템의 구성 요소를 배열하기

위한 플랫폼인 Kubeflow를 보여줍니다.

Kubeflow는 복잡한 시스템을 배포, 확장, 관리하기 위한 시스템으로 Kubernetes를 기반으로 구축되었습니다 .

Kubeflow 구성 인터페이스( 아래 참조 )를 사용하면 워크플로에 필요한 ML 도구를 지정할 수 있습니다. 그런 다음 실험 및 프로덕션 용도로 워크플로를 다양한 클라우드, 로컬 및 온프레미스 플랫폼에 배포할 수 있습니다.

4. ML 워크플로 소개

ML 시스템을 개발하고 배포할 때 ML 워크플로는 일반적으로 여러 단계로 구성됩니다.

ML 시스템 개발은 반복적인 프로세스입니다. ML 워크플로의 다양한 단계의 출력을 평가하고,

필요한 경우 모델과 매개변수에 변경 사항을 적용하여 모델이 필요한 결과를 계속 생성하도록 해야 합니다.

단순화를 위해 다음 다이어그램에서는 워크플로 단계를 순서대로 보여줍니다. 워크플로 끝에 있는 화살표는

다시 흐름을 가리키며 프로세스의 반복적 특성을 나타냅니다.

단계를 더 자세히 살펴보면 다음과 같습니다.

  • 실험 단계에서는 초기 가정을 기반으로 모델을 개발하고 모델을 반복적으로 테스트 및 업데이트하여 원하는 결과를 생성합니다.
    • ML 시스템으로 해결하려는 문제를 식별하세요.
    • ML 모델을 훈련하는 데 필요한 데이터를 수집하고 분석하세요.
    • ML 프레임워크와 알고리즘을 선택하고 모델의 초기 버전을 코딩하세요.
    • 데이터를 실험하고 모델을 훈련해 보세요.
    • 가장 효율적인 처리와 가장 정확한 결과를 보장하기 위해 모델 하이퍼파라미터를 조정합니다.
  • 프로덕션 단계에서는 다음 프로세스를 수행하는 시스템을 배포합니다.
    • 데이터를 교육 시스템에 필요한 형식으로 변환합니다. 훈련 및 예측 중에 모델이 일관되게 작동하도록 하려면 실험 및 생산 단계에서 변환 프로세스가 동일해야 합니다.
    • ML 모델을 학습합니다.
    • 온라인 예측 또는 일괄 모드 실행을 위해 모델을 제공합니다.
    • 모델의 성능을 모니터링하고 결과를 모델 조정 또는 재교육 프로세스에 제공합니다.

5. ML워크플로의 Kubeflow 구성요소

다음 다이어그램은 워크플로에 Kubeflow를 추가하여 각 단계에서 유용한 Kubeflow 구성요소를 보여줍니다.

자세히 알아보려면 Kubeflow 구성요소에 대한 다음 가이드를 읽어보세요.

  • Kubeflow에는 Jupyter notebook 생성 및 관리를 위한 서비스가 포함되어 있습니다 .
    대화형 데이터 과학과 ML 워크플로 실험을 위해 노트북을 사용하세요.
  • Kubeflow Pipelines 는 Docker 컨테이너를 기반으로 다단계 ML 워크플로를 구축, 배포, 관리하기 위한 플랫폼입니다.
  • Kubeflow는 ML 훈련, 초매개변수 조정을 구축하고 여러 플랫폼에서 워크로드를 제공하는 데 사용할 수 있는 
    여러 구성요소를 제공합니다.

6. 특정 ML 워크플로의 예

다음 다이어그램은 MNIST 데이터 세트에서 훈련된 모델을 훈련하고 제공하는 데 사용할 수 있는 특정 ML 워크플로의 간단한 예를 보여줍니다.

워크플로에 대한 자세한 내용과 시스템을 직접 실행하려면 GCP의 Kubeflow에 대한 엔드투엔드 튜토리얼을 참조하세요 .

 

7. Kubeflow 인터페이스

이 섹션에서는 Kubeflow와 상호작용하고 Kubeflow에서 ML 워크플로를 구축 및 실행하는 데 사용할 수 있는 인터페이스를 소개합니다.

8. Kubeflow 사용자 인터페이스(UI)

Kubeflow UI는 다음과 같습니다.

UI는 Kubeflow 배포의 구성 요소에 액세스하는 데 사용할 수 있는 중앙 대시보드를 제공합니다.

 중앙 대시보드에 액세스하는 방법을 읽어보세요 .

9. Kubeflow API 및 SDK

Kubeflow의 다양한 구성요소는 API와 Python SDK를 제공합니다. 다음 참조 문서 세트를 참조하세요.

10. 다음 단계(설치는 다음장에서 계속됩니다.)

  • Kubeflow 설치 에 따라 환경을 설정하고 Kubeflow를 설치하세요.
NFS 설정
PV, PVC, StorageClass 구성
Kubeflow 설치
1. NFS 설정
Worker node 서버를 NFS 서버로 사용
1.1 NFS 서버 구성
worker node 접속 후 명령 수행
$ sudo -i 
$ apt-get update 
$ apt install nfs-common nfs-kernel-server portmap 
$ mkdir /home/share/nfs -p 
$ chmod 777 /home/share/nfs 
$ vi /etc/exports
# 내용 추가 /home/share/nfs *(rw,no_root_squash,sync,insecure,no_subtree_check) # 
$ service nfs-server restart $ systemctl status nfs-server.service 
$ showmount -e 127.0.0.1 
$ mount -t nfs 192.168.29.14:/srv/nfs/ /srv/nfs/mnt
 

master node 접속 후 명령 수행
$ sudo -i 
$ apt-get update
$ apt install nfs-common nfs-kernel-server portmap
2. PV, PVC, StorageClass 구성
Master node 접속 후 yaml 파일 생성
$ vim test.yaml

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
        name: my-storageclass
provisioner: kubernetes.io/no-provisioner
parameters:
        server: 192.168.72.102
        path: /home/share/nfs
        readOnly: "false"

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pc
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  nfs:
    server: 192.168.72.102
    path: /home/share/nfs

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dpl-nginx
spec:
  selector:
    matchLabels:
      app: dpl-nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: dpl-nginx
    spec:
      containers:
      - name: master
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /mnt
          name: pvc-volume
      volumes:
      - name: pvc-volume
        persistentVolumeClaim:
          claimName: nfs-pvc

$ kubectl apply -f test.yaml
$ kubectl patch storageclass my-storageclass -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
$ sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml

# 내용 추가
    - --enable-admission-plugins=NodeRestriction,PodNodeSelector,DefaultStorageClass
    - --service-account-signing-key-file=/etc/kubernetes/pki/sa.key
    - --service-account-issuer=kubernetes.default.svc
#
$ kubectl taint nodes --all node-role.kubernetes.io/master-
3. Kubeflow 설치
Master node 접속 후 명령 수행
$ git clone https://github.com/kubeflow/manifests.git
$ cd manifests
$ git checkout tags/v1.3.1
$ wget https://github.com/kubernetes-sigs/kustomize/releases/download/v3.2.0/kustomize_3.2.0_linux_amd64 -O kustomize
$ sudo mv ./kustomize /usr/local/bin/kustomize
$ chmod 777 /usr/local/bin/kustomize
$ while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
설치완료 후 실행확인
kubectl get pod -A | egrep 'NAME|^auth|^cert-manager|^istio-system|^knative-|^kubeflow'
Trouble
스펙 문제인지 현재 kubeflow관련 container들이 생성되는 도중에 VM이 다운되는 문제가 발생
현재 스펙:
4 CPU, Memory 12GB, VDI 100GB
댓글