traindb-project / traindb-ml

Remote ML Model Serving Component for TrainDB
Apache License 2.0
6 stars 2 forks source link

feat: Kubeflow기반 연동 인터페이스 초기 구현 #10

Open sungsoo opened 2 years ago

sungsoo commented 2 years ago

feat: Kubeflow기반 연동 인터페이스 초기 구현

Priority-1


담당: 1jolee [즐거운기술]

Deadline: 2022년 6월 28일 (화) 12시

설계해 주신 초기 연동 인터페이스 설계안(5/31)을 기반으로 아래 구현을 진행해 주세요. 구현 형상(코드 등)은 아래 github에 commit해 주세요. https://github.com/traindb-project/traindb-ml/tree/main/interface


kihyuk-nam commented 2 years ago
sungsoo commented 2 years ago

@kihyuk-nam : 아래 내용에 대해 별도의 이슈 생성함 #19

현재 SPFlow는 Tensorflow와 PyTorch 프레임워크를 지원: 이슈 참고 #19 - 해당 내용에 대한 검토 필요

sungsoo commented 2 years ago

@1jolee : Kubeflow에서 docker private registry 처리 방법은 향후 아래 내용 참조. k8s 내에 registry 생성하는 방법임

Summary: Docker Private Registry Setup

Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
  generation: 1
  labels:
    run: kubeflow-registry
  name: kubeflow-registry
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      run: kubeflow-registry
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: kubeflow-registry
    spec:
      containers:
      - image: registry:2
        imagePullPolicy: IfNotPresent
        name: kubeflow-registry
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /var/lib/registry
          name: registry-persistent-storage
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: registry-persistent-storage
        persistentVolumeClaim:
          claimName: registry-pvc

Service

apiVersion: v1
kind: Service
metadata:
  labels:
    run: kubeflow-registry
  name: kubeflow-registry
  namespace: default
spec:
  ports:
  - name: registry
    port: 30000
    protocol: TCP
    targetPort: 5000
    nodePort: 30000
  selector:
    run: kubeflow-registry
  sessionAffinity: None
  type: NodePort

Persistent Volume Claim

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
  name: registry-pvc
  namespace: default
spec:
  storageClassName: local-path
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeMode: Filesystem

hosts 파일 수정

192.168.19.134  kubeflow-registry.default.svc.cluster.local

insecure registry 옵션 추가

vi /etc/docker/daemon.json

  "insecure-registries": [
    "kubeflow-registry.default.svc.cluster.local:30000"
  ]
$ systemctl daemon-reload

$ systemctl restart docker

접속 테스트

$ curl kubeflow-registry.default.svc.cluster.local:30000/v2/_catalog

{"repositories":[""]}
sungsoo commented 2 years ago

진행 현황 정리 요청

To @1jolee : 현재까지 진행 현황을 간략히 정리해 주세요. (Deadline: 7/29)

image

1jolee commented 2 years ago

진행 현황 정리(traindb-ml)

  1. 2022년 7월 19일(화) : traindb-ml 회의 내용에 따라 개발 진행
  2. ETRI개발서버 microk8s, kubeflow 재설치 및 정상화
  3. kubernetes 및 kubeflow python SDK 설치
  4. pytorchjob 및 kserve SDK 학습 및 설계에 필요한 SDK 자료 정리 중
  5. POD의 구분 및 selector에 사용할 labels 정의
  6. PV의 hostpath의 directory hierarchy 정의
  7. traindb(java) client 개발 시작
  8. traindb-ml(python SDK) program 개발 시작 o pytorchjob SDK 먼저 진행 이후, ㅇkserve SDK 진행 예정
  9. 현재까지 회의 및 설계의 내용은 최상위 수준의 내용이어서, 개발을 진행하며 상세 설계를 진행하여 진행하여야 할 것으로 예상.
  10. 위와 관련 문서 및 코드는 commit할만한 상태가 아니어서, 1차 완료되면 commit 예정.