DORA에서 이번에 나온 보고서인 2025 State of AI-assisted Software Development를 확인하면서 VSM(Value Stream Management), 즉 가치 흐름 관리라는 개념을 처음 알게되었는데요. DevOps 관점에서 중요한 내용인 것 같아 한번 알아보기위해 내용을 준비했습니다.

 

소프트웨어 개발에서 VSM(Value Stream Management), 즉 가치 흐름 관리는 고객에게 가치를 전달하는 데 필요한 모든 단계를 시각화, 측정, 분석하고 지속적으로 개선하는 경영 방식입니다. 이는 원래 린(Lean) 제조 방식(도요타 생산 시스템)에서 유래했지만, 오늘날에는 복잡한 소프트웨어 개발 및 DevOps 수명 주기에 맞춰 핵심적인 전략으로 자리 잡았습니다. 핵심 목표는 '아이디어'가 '고객의 손에 닿아 가치를 창출'하기까지의 전체 과정을 더 빠르고, 효율적이며, 예측 가능하게 만드는 것입니다.

 


🌊 소프트웨어 개발에서의 '가치 흐름'

VSM을 이해하려면 먼저 '가치 흐름(Value Stream)'이 무엇인지 알아야 합니다.

소프트웨어 개발에서 가치 흐름은 단순히 '코딩'만을 의미하지 않습니다. 이는 아이디어가 처음 제안된 순간부터 고객이 그 기능을 사용하기까지의 모든 과정을 포함합니다.

  • 시작: 비즈니스 아이디어 구상, 고객 요구사항 정의, 사용자 스토리 작성
  • 기획/설계: 기획, UX/UI 디자인, 아키텍처 설계
  • 개발: 코딩, 단위 테스트, 코드 리뷰
  • 테스트/검증: QA 테스트, 통합 테스트, 보안 검증
  • 배포/운영: 빌드, 배포(릴리스), 인프라 설정, 모니터링
  • 피드백: 고객 사용 후 피드백 수집 (이 피드백은 다시 '시작' 단계로 이어짐)

VSM은 이 모든 단계뿐만 아니라, 단계와 단계 사이의 '대기 시간'까지 중요하게 다룹니다. 예를 들어, 코드는 완성되었지만 코드 리뷰를 2일간 기다리는 시간, QA 테스트 환경 배포를 반나절 기다리는 시간 등이 모두 흐름을 방해하는 '낭비'로 간주됩니다.

 

 

 

🎯 VSM의 핵심 목표: '낭비(Waste)' 제거

VSM의 근본적인 목적은 린(Lean) 사상과 마찬가지로 낭비를 식별하고 제거하여 흐름을 최적화하는 것입니다.

소프트웨어 개발에서의 낭비는 다음과 같습니다.

  • 지연 (Delay): 승인 대기, 리뷰 대기, 테스트 환경 대기 등 작업이 멈춰있는 시간. (가장 큰 낭비)
  • 핸드오프 (Handoff): 작업이 한 팀에서 다른 팀(예: 개발팀 -> QA팀)으로 넘어갈 때 발생하는 비효율.
  • 결함 (Defects): 버그 수정, 재작업 등 이미 한 일을 다시 하는 것.
  • 불필요한 프로세스 (Excess Processing): 과도한 문서 작업, 복잡하고 불필요한 승인 절차.
  • 과잉 생산 (Overproduction): 당장 고객에게 필요하지 않거나 우선순위가 낮은 기능을 미리 만드는 것.
  • 컨텍스트 스위칭 (Context Switching): 개발자가 여러 작업을 동시에 진행하며 발생하는 집중력 저하.

 

 

🛠️ VSM은 어떻게 작동하나요? (주요 활동)

VSM은 일회성 이벤트가 아니라 지속적인 개선 사이클입니다.

 

1. 가치 흐름 매핑 (Value Stream Mapping)

가장 첫 번째 단계는 현재 상태(As-Is)를 시각화하는 것입니다.

  • 아이디어부터 배포까지 모든 단계를 그립니다.
  • 각 단계의 담당 팀(예: 제품팀, 개발팀, QA팀, 운영팀)을 표시합니다.
  • 각 단계에서 실제 작업이 일어나는 시간(Value-Added Time)과 대기하는 시간(Non-Value-Added Time)을 측정합니다.

 

2. 측정 (Measurement)

매핑된 흐름을 객관적인 데이터로 측정합니다. VSM은 "빠르게 일하는 것"이 아니라 "가치가 빠르게 흐르는 것"을 측정합니다.

 

 

주요 VSM 측정 지표 (Flow Metrics)

  • 리드 타임 (Lead Time): (가장 중요) 아이디어가 요청된 시점부터 고객에게 전달(배포)될 때까지 걸린 총 시간.
  • 사이클 타임 (Cycle Time): 실제 개발 작업이 시작된 시점부터 완료(배포)될 때까지 걸린 시간.
  • 흐름 효율성 (Flow Efficiency): (실제 작업 시간 / 총 리드 타임) * 100%. 이 수치가 낮을수록(보통 15% 미만) 대기 시간이 대부분이라는 뜻입니다.
  • 처리량 (Throughput): 특정 기간(예: 1주) 동안 완료되어 배포된 작업(기능, 스토리)의 수.
  • 작업 진행률 (WIP - Work in Progress): 현재 동시에 진행 중인 작업의 수. WIP가 너무 많으면 병목 현상이 발생하고 리드 타임이 길어집니다.

 

 

3. 분석 (Analyze)

측정된 데이터를 기반으로 **병목 구간(Bottleneck)**을 식별합니다.

  • "어디서 대기 시간이 가장 많이 발생하는가?" (예: 코드 리뷰, QA 테스트)
  • "어느 단계에서 결함(재작업)이 가장 많이 발생하는가?"
  • "팀 간의 핸드오프가 너무 잦거나 비효율적이지 않은가?"

 

4. 개선 (Improve)

데이터로 식별된 가장 큰 병목 지점부터 개선(카이젠, Kaizen)을 실행합니다.

  • 예시:
    • 병목이 'QA 테스트'라면 -> 테스트 자동화 비율을 높입니다.
    • 병목이 '코드 리뷰 대기'라면 -> 리뷰 정책을 변경하거나 리뷰 시간을 확보합니다.
    • 병목이 '배포'라면 -> CI/CD 파이프라인을 고도화합니다.
  • 개선 후, 다시 1번(매핑)으로 돌아가 효과를 측정하고 새로운 병목을 찾아 개선을 반복합니다.

 

 

 

 


🤝 VSM, 애자일(Agile), 그리고 데브옵스(DevOps)

VSM은 애자일이나 데브옵스와 경쟁하는 개념이 아니라, 이들을 통합하고 비즈니스 가치에 연결하는 상위 개념입니다.

  • 애자일 (Agile): 주로 개발 팀 내부의 유연하고 반복적인 작업 방식(스프린트, 스크럼)에 중점을 둡니다. "어떻게 효율적으로 개발할 것인가?"
  • 데브옵스 (DevOps): 개발(Dev)과 운영(Ops) 간의 장벽을 허물어 배포 속도(CI/CD)와 안정성을 높이는 문화 및 기술 방식입니다. "어떻게 빠르고 안정적으로 배포할 것인가?"
  • VSM (Value Stream Management): 이 모든 활동(애자일, 데브옵스 포함)을 비즈니스 관점에서 End-to-End(시작부터 끝까지)로 연결합니다. "우리의 애자일과 데브옵스 활동이 정말로 고객에게 가치를 더 빨리 전달하고 있는가?"를 측정하고 관리합니다.

 

 

 

✨ VSM 도입의 핵심 이점

  1. 전체 프로세스 가시성 확보: '블랙박스'처럼 느껴졌던 소프트웨어 개발 전체 과정을 모든 이해관계자가 투명하게 볼 수 있습니다.
  2. 데이터 기반 의사결정: '느낌'이 아닌 실제 데이터(리드 타임, 효율성)를 기반으로 어디를 개선해야 할지 정확히 알 수 있습니다.
  3. 병목 현상 해결 및 속도 향상: 낭비와 대기 시간을 줄여 고객에게 가치를 전달하는 속도(Time-to-Market)를 획기적으로 단축시킵니다.
  4. 팀 간 사일로(Silo) 제거: 제품, 개발, QA, 운영팀이 각자의 목표가 아닌 '가치 전달'이라는 공동의 목표를 향해 협업하게 만듭니다.
  5. 비즈니스 성과 연계: 개발팀의 활동(배포 속도, 처리량)이 실제 비즈니스 성과(매출, 고객 만족)에 어떻게 기여하는지 명확히 연결할 수 있습니다.

 

 

소프트웨어 개발에서 가치 흐름 관리(VSM)를 통해 아이디어 구상부터 고객에게 가치를 전달하기까지의 모든 단계를 시각화하고, '흐름 지표'(Flow Metrics)를 통해 객관적으로 측정 및 분석할 수 있습니다.

 

VSM의 핵심은 '가치 흐름 매핑'으로 현재 상태를 파악하고, '낭비'(특히 대기 시간)와 병목 구간을 식별하여 지속적으로 개선하는 것입니다. 이는 애자일(Agile), 데브옵스(DevOps)와 같은 활동들이 실제로 비즈니스 가치에 어떻게 기여하는지 명확히 연결하고, 데이터 기반 의사결정을 통해 전체적인 가치 전달 속도를 높이는 핵심 경영 방식입니다.

 

 

 

지금까지 소프트웨어 개발에서의 가치 흐름 관리(VSM)에 대해 알아보는 시간을 가졌습니다...! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

[Azure] 사용자 계정, 테넌트, 구독, 리소스 그룹

Azure는 Microsoft가 제공하는 클라우드 컴퓨팅 플랫폼으로, 인프라(IaaS), 플랫폼(PaaS), 소프트웨어(SaaS) 서비스를 제공합니다.
가상 머신, 데이터베이스, AI, 보안 등 다양한 리소스를 전 세계 데이터센터에서 탄력적으로 사용할 수 있습니다.
Azure를 통해 비용 효율적으로 애플리케이션을 개발, 배포, 운영할 수 있습니다.

 

 

Azure를 처음 접하거나 본격적으로 조직에 도입하려고 할 때 가장 먼저 마주치는 개념이 있습니다.
바로 "계정 → 테넌트 → 구독 → 리소스 그룹" 이라는 계층 구조입니다.

이 구조를 제대로 이해하면 Azure에서 리소스를 더 깔끔하게 관리하고, 비용 통제도 수월하며, 보안과 운영 체계도 체계적으로 설계할 수 있습니다. 오늘은 각 구성 요소가 어떤 역할을 하고, DevOps 개발자 입장에서 어떻게 활용하면 좋을지 자세히 풀어보겠습니다.

 


사용자 계정 (User Account)

 

정의

Azure 사용자 계정은 리소스에 접근하거나 제어할 수 있는 ID 주체입니다.
사람(개인 사용자), 서비스 주체(Service Principal), 자동화된 배포 시스템, 애플리케이션 등도 모두 사용자 계정으로 동작할 수 있습니다.

 

역할

인증(Authentication): Azure에 로그인하여 사용자 확인
인가(Authorization): 리소스에 대한 액세스 권한 결정 (RBAC 대상)
CI/CD 통합 주체: DevOps 툴과의 연동 시 Service Principal 사용
보안 정책 대상: MFA, 조건부 접근, 감사 로깅, PIM 대상

 

사용 방법

사용자 등록: Entra ID 포털에서 사용자 또는 그룹 생성
서비스 주체 생성: az ad sp create-for-rbac
RBAC 역할 부여: az role assignment create
MFA, 조건부 접근, PIM 등을 통해 보안 또한 강화할 수 있습니다.

 

 


테넌트 (Tenant)

Azure의 계층 구조는 1:N(일대다) 관계로 확장됩니다.
하나의 사용자 계정은 여러 테넌트에 속할 수 있습니다.

 

정의

테넌트는 Microsoft Entra ID의 인스턴스로, 하나의 조직을 대표하는 ID 디렉터리입니다.
조직이 소유한 사용자, 그룹, 애플리케이션, 도메인, 정책 등이 여기에 포함됩니다.

 

역할

Entra ID 인스턴스 = 조직의 ID 및 접근 제어의 중심
다중 구독 관리, 조건부 접근 정책, 외부 사용자 초대 등 가능
B2B 협업이나 SSO, MFA 등도 이 계층에서 설정

 

사용 방법

CLI에서 특정 테넌트로 로그인: az login --tenant <tenant-id>
외부 사용자 초대, 조건부 접근 정책 설정
PIM을 통해 관리자 권한 승격에 승인 프로세스 추가 가능

 

 


구독 (Subscription)

하나의 테넌트는 여러 구독을 포함할 수 있습니다.

 

정의

Azure에서 실제 요금이 발생하는 단위가 바로 구독(Subscription)입니다.
리소스를 만들고 운영하려면 반드시 구독이 있어야 하고, 보통은 부서나 프로젝트별로 구독을 나누어 운영합니다.

 

역할

리소스 배포와 과금의 기준 단위
Quota, 예산(Budget), 정책, 태그 전략의 경계선
RBAC 및 Azure Policy의 적용 범위

 

사용 방법

프로젝트나 조직 단위로 구독 분리
구독별로 비용 분석: Azure Cost Management + 태그(costcenter, owner) 활용
CLI에서 구독 전환: az account set --subscription <subscription-id>
구독 단위로 비용 모니터링 및 경고 설정

 

 


리소스 그룹 (Resource Group)

하나의 구독은 여러 리소스 그룹을 가질 수 있습니다.

 

정의

이제 실제로 VM, DB, App Service 같은 리소스를 만들면 어디에 넣느냐? 바로 리소스 그룹입니다.
리소스를 관리하는 하나의 논리적인 컨테이너라고 보시면 될 것 같습니다.

 

역할

리소스 배포, 삭제, 권한 설정을 묶어서 처리 가능
리소스 수명주기를 기준으로 그룹화
정책, 잠금(Lock), 태그를 그룹 단위로 적용할 수 있어 운영이 훨씬 편리

 

사용 방법

앱 단위 또는 기능 단위로 리소스 그룹 구성
리소스 그룹 삭제 후 테스트 환경 초기화 가능
자동화 배포는 ARM 또는 Bicep을 이용해 리소스 그룹 단위로 구성

 

 


 

 

Azure를 효과적으로 활용하기 위해 사용자 계정 → 테넌트 → 구독 → 리소스 그룹으로 이어지는 계층 구조를 알아봤는데요.

 

각 계층은 독립적이면서도 유기적으로 연결되어 있어, 보안, 리소스 관리, 비용 통제, 자동화에 이르기까지 모든 운영의 기반이 됩니다. 이 구조를 잘 설계하고 활용하면 Azure 환경을 보다 안정적이고 효율적으로 운영할 수 있습니다. 특히, 1:N 관계를 활용한 계층적 구성은 확장성과 거버넌스 측면에서 매우 강력한 도구가 되죠.

 

이제 기본 구조를 명확히 이해하셨다면, 다음 단계에서는 RBAC 권한 설계, Azure Policy 설정, Bicep 기반 자동화 배포로 이어가 보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Docker] 도커 컨테이너 GitLab 서버 구축하기

 

GitLab은 Git 기반의 소스코드 저장소로, CI/CD, 이슈 관리, 코드 리뷰 등 DevOps 기능을 통합 제공하며, 자체 서버에 설치해 팀 내 협업과 배포 자동화를 중앙에서 효율적으로 관리할 수 있습니다.

 

도커 컨테이너로 GitLab 서버를 간단히 구축하는 방법을 알아보도록 하겠습니다.

 

 


사전 작업

 

[Docker] 간단 설치 방법

https://every-up.tistory.com/4

 

[Docker] 간단 설치 방법

[Docker] 간단 설치 방법Docker란 리눅스 컨테이너 기반으로 빠르게 서비스 구축, 개발, 테스트 등을 할 수 있는 오픈소스 가상화 플랫폼입니다. 컨테이너라는 개념이 없을 때에는 가상 머신(Virtua

every-up.tistory.com

 

 

 


GitLab 서버 구축

 

기본 작업

gitlab에서 기본 설정과 로그, 데이터를 저장 시 사용할 config, logs, data 디렉토리를 생성합니다.

# mkdir config logs data

 

 

docker-compose.yml 파일 생성

도커 컨테이너로 GitLab 서버를 구동하기 위해 docker-compose.yml 파일을 작성합니다.

services:
  gitlab:
    image: gitlab/gitlab-ce:17.9.5-ce.0
    container_name: gitlab
    restart: always
    hostname: '{Server IP}'
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - ./config:/etc/gitlab
      - ./logs:/var/log/gitlab
      - ./data:/var/opt/gitlab
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://{Server IP}'

 

기본 작업으로 생성한 config, logs, data 디렉토리를 지정합니다.
서비스 포트는 기본적으로 80, 443, 22번 포트를 사용하며 {Server IP} 항목은 접근하고자 하는 GitLab 서버의 IP 또는 Domain 값으로 설정합니다.

 

 

컨테이너 실행

docker-compose.yml 파일이 있는 위치에서 docker compose up -d` 명령어로 컨테이너를 실행합니다.

# docker compose up -d
[+] Running 2/2
 ✔ Network gitlab_default  Created                                                                                                                                      0.1s
 ✔ Container gitlab        Started

 

 

컨테이너 실행 확인

정상적으로 GitLab 컨테이너가 실행되었는지 docker ps 명령어로 확인합니다.

# docker ps
CONTAINER ID   IMAGE                                              COMMAND                  CREATED              STATUS                                 PORTS                                                                  NAMES
6547a7476017   gitlab/gitlab-ce:17.9.5-ce.0                       "/assets/wrapper"        About a minute ago   Up About a minute (health: starting)   0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   gitlab

 

 

웹 페이지 접속

설정한 URL 정보로 GitLab 웹 페이지에 접속합니다.

 

 

계정은 기본적으로 'root' 이름으로 생성되며 패스워드는 아래 명령어로 확인하여 입력합니다.

# docker exec -it gitlab cat /etc/gitlab/initial_root_password | grep "Password: "
Password: +k96vqX8kYanndkKh1y8NRY3agOwv8m5QAJwgLfzYys=

 

 

로그인이 정상적으로 되는지 확인합니다.

 

 

 



도커 컨테이너로 GitLab 서버를 간단히 구축하는 방법을 알아봤는데요.

간단히 docker-compose.yml 파일을 작성 후 실행하는 것만으로도 GitLab 서버를 도커 컨테이너로 실행할 수 있습니다.
또한 기본 계정은 생성되며 기본 계정의 패스워드는 컨테이너에 저장된 파일을 통해 확인하실 수 있습니다.
GitLab 서버를 통해 형상관리와 관련된 다양한 기능을 사용해보시기 바랍니다....! 끝...!


유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!



[Reference]
https://hub.docker.com/r/gitlab/gitlab-ce/
https://docs.gitlab.com/install/docker/

 

 

 

[GCP] VertexAI 커스텀 학습 컨테이너 생성하기


GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

Vertex AI 커스텀 학습 컨테이너는 사용자가 직접 구성한 컨테이너 이미지로, 학습 코드, 라이브러리, 실행 환경을 완전히 제어할 수 있습니다. 이를 통해 특수한 라이브러리나 환경 설정, 커스텀 실행 방식 등을 자유롭게 구성하여 나만의 학습 프로세스를 구축할 수 있습니다.

 

Vertex에서 커스텀 학습 컨테이너를 생성하고 학습을 실행해보는 방법을 알아보도록 하겠습니다.

 

 


VertexAI 사전 구성

VertexAI를 사용할 사전 구성 작업을 알아봅니다.

 

[GCP] VertexAI 알아보기

https://every-up.tistory.com/106

 

[GCP] VertexAI 알아보기

[GCP] VertexAI 알아보기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML)

every-up.tistory.com

 

 

[GCP] VertexAI Workbench 생성하기

https://every-up.tistory.com/107

 

[GCP] VertexAI Workbench 생성하기

[GCP] VertexAI Workbench 생성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신

every-up.tistory.com

 

 

[GCP] VertexAI Custom Training Job 간단 구성하기

https://every-up.tistory.com/108

 

[GCP] VertexAI Custom Training Job 간단 구성하기

[GCP] VertexAI Custom Training Job 간단 구성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게

every-up.tistory.com

 

 

 


커스텀 학습 컨테이너 생성

기본 작업

기본 작업은 'VertexAI Custom Training Job 간단 구성하기' 작업의 '작업3'번까지 진행합니다.

Custom_Container_Job.ipynb
0.01MB

 

작업 4 - Dockerfile 및 entrypoint.sh 파일 생성

Vertex AI에서 커스텀 학습 컨테이너를 사용하려면, 학습 환경(학습 코드, 라이브러리, 실행 환경 등)을 담은 컨테이너 이미지를 직접 만들어야 합니다. Vertex AI는 컨테이너 이미지의 실행만을 지원하며 내부 명령어를 자동으로 알지 못하므로 컨테이너 이미지에 학습 환경을 사전에 구성해야 되는 것입니다.

 

Dockerfile 파일을 생성하여 학습 환경을 정의하고 entrypoint.sh 파일을 생성하여 컨테이너 실행 시 해야 할 작업(복사, 학습, 업로드 등)을 정의합니다.

# 작업 4 - Dockerfile 및 entrypoint.sh 파일 생성

from pathlib import Path

# Dockerfile 내용
dockerfile_content = '''\
# 베이스 이미지: PyTorch GPU 기반
FROM gcr.io/deeplearning-platform-release/pytorch-gpu.1-12:latest

# 작업 디렉토리 생성
WORKDIR /app

# 필요한 패키지 설치
RUN apt-get update && \\
    apt-get install -y git gcc curl && \\
    pip install --upgrade pip

# YOLOv5 클론 및 의존성 설치
RUN git clone https://github.com/ultralytics/yolov5.git && \\
    cd yolov5 && \\
    pip install -r requirements.txt

# 진입점 스크립트 복사 (추후 작성)
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh

# 엔트리포인트 지정
ENTRYPOINT ["/app/entrypoint.sh"]
'''

# Entrypoint 스크립트 템플릿
entrypoint_content = '''\
#!/bin/bash
set -e

BUCKET_NAME="test-coco-dataset-bucket"

cd /app/yolov5

# 데이터 및 설정 다운로드 (사용자가 BUCKET_NAME을 수정해야 함)
gsutil -m cp -r gs://${BUCKET_NAME}/coco/coco128/coco128 .
gsutil -m cp gs://${BUCKET_NAME}/coco/coco128.yaml .
gsutil -m cp gs://${BUCKET_NAME}/coco/train.py .

# 학습 실행
python train.py --data=coco128.yaml --epochs=10 --batch-size=16 --img-size=640

# 결과 업로드
gsutil -m cp -r runs/train/* gs://${BUCKET_NAME}/coco/models/
'''

# 파일 생성
Path("Dockerfile").write_text(dockerfile_content)
Path("entrypoint.sh").write_text(entrypoint_content)

print("✅ Dockerfile 및 entrypoint.sh 파일이 생성되었습니다.")

 

 

작업 5 - 학습용 컨테이너 이미지 생성

학습 환경(학습 코드, 라이브러리, 실행 환경 등)을 정의한 Dockerfile을 사용하여 컨테이너 이미지를 생성하고, Vertex AI에서 사용할 수 있도록 컨테이너 레지스트리에 이미지를 등록합니다.

# 작업 5 - 학습용 컨테이너 이미지 생성

import subprocess

# 컨테이너 변수 설정
REPO_NAME="training-repo"
IMAGE_NAME = "yolo-train"
IMAGE_URI = f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPO_NAME}/{IMAGE_NAME}:latest"

# Docker 빌드 실행 (현재 디렉토리에 Dockerfile, entrypoint.sh 존재해야 함)
subprocess.run(["docker", "build", "-t", IMAGE_URI, "."], check=True)

# 레포지토리 생성
!gcloud artifacts repositories create {REPO_NAME} \
  --repository-format=docker \
  --location={REGION} \

# Docker 인증
!gcloud auth configure-docker {REGION}-docker.pkg.dev

# Docker 이미지 푸시
subprocess.run(["docker", "push", IMAGE_URI], check=True)

 

 

작업 6 - Custom Training Job 실행

Google Cloud의 AI 관련 서비스(Google Vertex AI, AutoML, AI Platform 등)를 관리할 수 있는 gcloud ai 명령어를 사용하여 Custom Training Job을 실행합니다. gcloud ai custom-jobs create 명령어와 사전에 생성한 컨테이너 이미지를 선택하여 실행합니다.


해당 컨테이너 이미지에는 학습에 필요한 학습 데이터, 학습 환경, 학습 코드, 실행 명령어 등이 이미 구축되어 있으므로 별도의 환경 변수 설정은 필요 없습니다.

# 작업 6 - Custom Training Job 실행

!gcloud ai custom-jobs create \
  --region=us-central1 \
  --display-name=yolo-training-job \
  --worker-pool-spec=machine-type=n1-standard-8,replica-count=1,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,container-image-uri={IMAGE_URI}

 

 

명령어 실행 시 아래와 같이 Custom Training Job 생성에 대한 로그가 출력됩니다.

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
CustomJob [projects/123412341234/locations/us-central1/customJobs/3600309885524246528] is submitted successfully.

Your job is still active. You may view the status of your job with the command

  $ gcloud ai custom-jobs describe projects/123412341234/locations/us-central1/customJobs/3600309885524246528

or continue streaming the logs with the command

  $ gcloud ai custom-jobs stream-logs projects/123412341234/locations/us-central1/customJobs/3600309885524246528

 

 

 


커스텀 학습 컨테이너 실행

VertexAI 서비스 관리 페이지에서 Custom Training Job 실행을 확인해보도록 하겠습니다.

 

모델 개발 -> 학습 메뉴에서 커스텀 작업을 선택한 후 생성된 yolo-training-job 이름의 Custom Training Job을 선택합니다.

 

 

Custom Training Job의 현재 상태를 확인할 수 있으며 시작 시간, 경과 시간, 머신 유형, 로그 등의 상세한 정보를 확인할 수 있습니다. 모든 학습 환경을 학습 컨테이너에 정의했기 때문에 별도로 인자(환경 변수)에 대한 내용은 없습니다.

 

 

같은 화면에서 하단으로 내려보면 기계학습 실행 시 CPU, GPU, Network 사용에 대한 모니터링 정보를 상세하게 확인할 수 있습니다.

 

 

로그 보기 버튼을 클릭하면 기계학습 실행 시의 모든 상세 로그를 확인할 수 있습니다.

 

 

이제 학습된 모델 파일을 확인해봅시다.


학습된 모델 파일은 GCS 버킷(gs://{BUCKET_NAME}/coco/models/)에 저장되도록 설정하였으므로, GCS 버킷을 통해 확인해보도록 합시다. 기본 학습 코드(train.py)에 따라 GCS 버킷에 exp/weights/ 경로에 학습된 모델 파일(best.pt, last.pt)이 생성됨을 확인하실 수 있습니다.

 

 

 


 

GCP Vertex AI에서 커스텀 학습 컨테이너를 생성하고 학습을 실행해보는 방법에 대해 확인해봤는데요.

 

Dockerfile 파일을 생성하여 학습 환경을 정의하고 entrypoint.sh 파일을 생성하여 컨테이너 실행 시 해야 할 작업(복사, 학습, 업로드 등)을 정의합니다. 커스텀 학습 컨테이너 이미지 생성하고 Vertex AI에서 사용할 수 있도록 컨테이너 레지스트리에 이미지를 등록합니다. 별도의 환경 변수 설정 없이 gcloud ai custom-jobs create 명령어를 사용해 학습을 수행합니다. 학습된 모델(best.pt, last.pt)을 GCS 버킷에서 확인할 수 있으며 Vertex AI 관리 페이지에서 Custom Training Job의 상태, 리소스 사용량, 로그 등을 모니터링할 수 있습니다.

 

커스텀 학습 컨테이너를 통해 다양한 기계 학습 환경과 작업 등을 구축 및 관리하여 기계학습을 사용해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai/docs/training/containers-overview?hl=ko

 

 

 

'GCP' 카테고리의 다른 글

[GCP] VertexAI Custom Training Job 간단 구성하기  (2) 2025.04.07
[GCP] VertexAI Workbench 생성하기  (0) 2025.03.31
[GCP] VertexAI 알아보기  (0) 2025.03.25

[GCP] VertexAI Custom Training Job 간단 구성하기


GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

Vertex AI Custom Training Job은 사용자가 직접 구성한 커스텀 코드와 하이퍼파라미터를 이용해 모델 학습을 수행할 수 있는 Google Cloud Vertex AI의 기능입니다. 컨테이너 기반 환경에서 자동 리소스 할당과 분산 학습을 지원하여 효율적이고 확장 가능한 모델 개발을 구현합니다.

 

 

GCP에서 제공하는 Vertex AI Custom Training Job을 JupyterLab을 사용하여 간단히 구성해보는 방법을 알아보도록 하겠습니다.

 

 

 


[GCP] VertexAI 알아보기

GCP VertexAI에 대한 기본적인 정보를 알아봅니다.

 

https://every-up.tistory.com/106

 

[GCP] VertexAI 알아보기

[GCP] VertexAI 알아보기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML)

every-up.tistory.com

 

 

[GCP] VertexAI Workbench 생성하기

JupyterLab을 사용할 수 있도록 사전에 VertexAI Workbench를 생성합니다.

 

https://every-up.tistory.com/107

 

[GCP] VertexAI Workbench 생성하기

[GCP] VertexAI Workbench 생성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신

every-up.tistory.com

 

 

 

 


JupyterLab 실행

VertexAI Workbench에서 실행하고자 하는 JupyterLab 인스턴스를 클릭합니다.

 

 

잠깐의 로딩화면 이후 JupyterLab이 정상적으로 실행함을 확인하실 수 있습니다.

 

 

아래 Jupyter Notebook 파일을 다운로드 후 드래그 앤 드롭(Drag and Drop)으로 파일을 업로드 합니다.

Simple_Custom_Training_Job.ipynb
0.00MB

 

 

 

 


Custom Training Job 구성 및 실행

이제 업로드한 Jupyter Notebook 파일을 실행하여 Custom Training Job을 구성 및 실행해보도록 하겠습니다.

 

 

작업 1 - 기본 설정

Custom Training Job을 구성하기 위한 기본적인 패키지를 설치하고, 프로젝트 관련 설정을 정의합니다.
PROJECT_ID 값은 사용 중인 GCP 프로젝트의 ID 값으로 설정합니다.

# 작업 1 - 기본 설정

import os
from google.cloud import aiplatform, storage
import subprocess

# 필요한 패키지 설치
subprocess.run(["pip", "install", "torch", "torchvision", "google-cloud-aiplatform", "google-cloud-storage", "pyyaml"])

import torch
import torchvision
import zipfile

# GCP 프로젝트 설정
PROJECT_ID = "{Project ID}"  # GCP 프로젝트 ID
REGION = "us-central1"  # 리전 설정
BUCKET_NAME = "test-coco-dataset-bucket"  # GCS 버킷 이름

# Vertex AI 초기화
aiplatform.init(project=PROJECT_ID, location=REGION)

 

 

작업 2 - COCO 데이터셋 및 기계 학습 환경 다운로드

기계 학습은 COCO 데이터셋을 활용하여 YOLOv5 모델을 학습해보도록 하겠습니다.
COCO 데이터셋 및 YOLOv5 모델을 다운로드 및 압축을 해제합니다.

# 작업 2 - COCO 데이터셋 및 기계 학습 환경 다운로드

# COCO 데이터셋 및 학습 코드 다운로드
!wget https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip
!wget https://raw.githubusercontent.com/ultralytics/yolov5/master/data/coco128.yaml
!wget https://raw.githubusercontent.com/ultralytics/yolov5/master/train.py

# 데이터 압축 해제
import zipfile
with zipfile.ZipFile("coco128.zip", "r") as zip_ref:
    zip_ref.extractall("coco128")

 

 

작업 2-1 - coco128.yaml 파일 수정

JupyterLab에서 데이터셋 구성 파일인 coco128.yaml 파일을 수정하여 COCO 데이터셋의 경로 설정을 변경합니다.
데이터셋 기본 경로(path), 학습 경로(train), 검증 경로(val)를 수정합니다.

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: . # dataset root dir
train: coco128/images/train2017 # train images (relative to 'path') 128 images
val: coco128/images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

 

 

작업 3 - GCS 버킷 생성 및 업로드

GCS 버킷을 생성한 후 학습에 필요한 데이터셋, 데이터셋 구성 파일, 학습 코드를 GCS 버킷에 업로드 합니다.
Custom Training Job을 실행 시 GCS 버킷에 있는 데이터를 사용하여 학습을 구동시키고자 합니다.

# 작업 3 - GCS 버킷 생성 및 업로드

# GCS 버킷 생성
storage_client = storage.Client()
bucket = storage_client.create_bucket(BUCKET_NAME, location=REGION)

# GCS 버킷에 업로드
!gsutil -m cp -r coco128 gs://{BUCKET_NAME}/coco/
!gsutil -m cp -r coco128.yaml gs://{BUCKET_NAME}/coco/
!gsutil -m cp -r train.py gs://{BUCKET_NAME}/coco/

 

 

작업 4 - Custom Training Job 실행

Google Cloud의 AI 관련 서비스(Google Vertex AI, AutoML, AI Platform 등)를 관리할 수 있는 gcloud ai 명령어를 사용하여 Custom Training Job을 실행합니다.
gcloud ai custom-jobs create 명령어와 학습에 필요한 파라미터 값을 입력하여 실행합니다.

# 작업 4 - Custom Training Job 실행

!gcloud ai custom-jobs create \
  --region=us-central1 \
  --display-name=yolo-training-job \
  --worker-pool-spec=machine-type=n1-standard-8,replica-count=1,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,container-image-uri=gcr.io/deeplearning-platform-release/pytorch-gpu.1-12:latest \
  --command=bash \
  --args="-c" \
  --args="\
  git clone https://github.com/ultralytics/yolov5.git && \
  gsutil -m cp -r gs://{BUCKET_NAME}/coco/coco128/coco128 yolov5/ && \
  gsutil -m cp -r gs://{BUCKET_NAME}/coco/coco128.yaml yolov5/ && \
  gsutil -m cp -r gs://{BUCKET_NAME}/coco/train.py yolov5/ && \
  cd yolov5 && \
  pip install --upgrade pip && \
  pip install -r requirements.txt && \
  python train.py --data=coco128.yaml --epochs=10 --batch-size=16 --img-size=640 && \
  gsutil -m cp -r runs/train/* gs://{BUCKET_NAME}/coco/models/"

 

worker-pool-spec 옵션을 통해 학습 머신에 대한 설정과 컨테이너 이미지를 설정할 수 있습니다. 컨테이너 이미지는 직접 생성한 이미지를 사용할 수 있으며 사전에 학습 환경이 구성된 컨테이너 이미지를 생성하여 기계 학습 환경을 더 빠르게 프로비저닝 수 있습니다.

 

이번 Custom Training Job 실행에서는 GCP에서 기본으로 제공하는 컨테이너 이미지를 사용하였으며, 학습에 필요한 환경구성과 학습 코드 실행 등을 args로 추가하여 구성할 수 있도록 설정하였습니다.

 

 

명령어 실행 시 아래와 같이 Custom Training Job 생성에 대한 로그가 출력됩니다.

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
CustomJob [projects/123412341234/locations/us-central1/customJobs/8016661615963275264] is submitted successfully.

Your job is still active. You may view the status of your job with the command

  $ gcloud ai custom-jobs describe projects/123412341234/locations/us-central1/customJobs/8016661615963275264

or continue streaming the logs with the command

  $ gcloud ai custom-jobs stream-logs projects/123412341234/locations/us-central1/customJobs/8016661615963275264

 

 


Custom Training Job 실행 확인

VertexAI 서비스 관리 페이지에서 Custom Training Job 실행을 확인해보도록 하겠습니다.

 

모델 개발 -> 학습 메뉴에서 커스텀 작업을 선택한 후 생성된 yolo-training-job 이름의 Custom Training Job을 선택합니다.

 

 

Custom Training Job의 현재 상태를 확인할 수 있으며 시작 시간, 경과 시간, 머신 유형, 로그 등의 상세한 정보를 확인할 수 있습니다.

 

 

같은 화면의 하단에는 기계학습 실행 시 CPU, GPU, Network 사용에 대한 모니터링 정보를 상세하게 확인할 수 있습니다.

 

 

로그 보기 버튼을 클릭하면 기계학습 실행 시의 모든 상세 로그를 확인할 수 있습니다.

 

 

이제 학습된 모델 파일을 확인해봅시다.


학습된 모델 파일은 GCS 버킷(gs://{BUCKET_NAME}/coco/models/)에 저장되도록 설정하였으므로, GCS 버킷을 통해 확인해보도록 합시다. 기본 학습 코드(train.py)에 따라 GCS 버킷에 exp/weights/ 경로에 학습된 모델 파일(best.pt, last.pt)이 생성됨을 확인하실 수 있습니다.

 

 

 


 

 

GCP에서 제공하는 Vertex AI Custom Training Job을 JupyterLab을 사용하여 간단히 구성해보는 방법에 대해 확인해봤는데요.

 

Vertex AI Workbench에서 JupyterLab을 실행한 후, COCO 데이터셋과 YOLOv5 모델을 GCS 버킷에 업로드하여 Custom Training Job을 실행합니다. gcloud ai custom-jobs create 명령어를 사용해 학습을 수행하고, 학습된 모델(best.pt, last.pt)을 GCS 버킷에서 확인할 수 있습니다. Vertex AI 관리 페이지에서 Custom Training Job의 상태, 리소스 사용량, 로그 등을 모니터링할 수 있습니다.

 

데이터셋과 기계학습 환경을 구축하고 Vertex AI Custom Training Job을 사용하여 기계학습을 사용해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai/docs/training/create-custom-job?hl=ko

 

 

 

'GCP' 카테고리의 다른 글

[GCP] VertexAI 커스텀 학습 컨테이너 생성하기  (0) 2025.04.14
[GCP] VertexAI Workbench 생성하기  (0) 2025.03.31
[GCP] VertexAI 알아보기  (0) 2025.03.25

[GCP] VertexAI Workbench 생성하기

GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

Vertex AI Workbench는 전체 기계 학습 워크플로에 사용되는 Jupyter 노트북 기반 개발 환경입니다. Vertex AI Workbench 인스턴스의 Jupyter 노트북 내에서 Vertex AI 및 기타 Google Cloud 서비스와 상호작용할 수 있습니다.

 

 

GCP에서 제공하는 VertexAI Workbench를 생성하는 방법을 알아보도록 하겠습니다.

 

 


Workbench 생성

Vertex AI Workbench를 생성하는 방법을 알아보겠습니다.

 

메뉴 접근

Google Cloud의 콘솔을 접근 후 "Vertex AI"를 검색하여 Vertex AI 서비스 메뉴에 접근합니다.

 

 

좌측 메뉴에 Notebooks -> Workbench 메뉴를 클릭합니다.

 

 

Workbench의 새로 만들기 버튼을 통해 신규 Workbench를 생성할 수 있습니다.

 

 

생성 옵션

새로 만들기 버튼을 클릭한 후 새 인스턴스를 생성합니다.
이름을 지정하고, 머신 유형 및 기타 옵션을 수정하기 위해 고급 옵션을 선택합니다.



세부정보에서는 리전과 라벨, 네트워크 태그, Workbench 유형을 선택할 수 있습니다.
Workbench 유형은 인스턴스, 관리형 노트북, 사용자 관리형 노트북으로 총 3가지가 있지만 관리형 노트북과 사용자 관리형 노트북 유형은 25년 4월 14일에 서비스 지원이 종료될 예정입니다.

 

 

JupyterLab 환경에 대한 버전 및 기타 옵션을 선택할 수 있습니다.
JupyterLab 4.x 버전에서는 JupyterLab 3.x 버전과 다르게 커널 및 서버가 Jupyter Server로 통합 관리되며
확장 기능 설치 시 Node.js 없이도 설치가 가능하고 초기 로딩 속도롤 쵀대 50% 개선했다고 합니다.

 

 

머신 유형에서는 가상머신에 대한 다양한 타입을 선택하여 사용할 수 있습니다.
기계 학습 테스트 시 학습용 머신을 별도로 생성할 것이므로, 범용 머신 유형을 선택했습니다.

GPU 타입을 선택하여 JupyterLab 환경에서 바로 기계학습을 테스트 할 수도 있습니다.

 

 

디스크 설정에서는 Boot 디스크와 Data 디스크의 옵션을 선택할 수 있습니다.
Boot 디스크는 JupyterLab 머신의 "/" 경로의 디스크 파티션에 할당되며, Data 디스크는 "/home/jupyter" 경로의 디스크 파티션에 할당됩니다.

 

 

네트워크 설정에서는 사전에 생성한 네트워크를 선택하거나 기본 네트워크를 선택할 수 있습니다.
네트워크 설정을 통해 인터넷, Google Cloud 서비스, 조직 내부 시스템 등과 어떻게 연결하여 사용할지 결정할 수 있습니다.

 

 

IAM 및 보안 설정에서는 JupyterLab 인터페이스를 사용할 수 있는 사용자를 결정합니다.
Google Cloud IAM 계정이 있는 사용자와 단일 사용자로 구분됩니다. 또한 그 외의 다양한 보안 옵션을 선택할 수 있습니다.

 

 

마지막으로 시스템 상태 관련 설정을 완료한 후 만들기 버튼을 클릭하여 인스턴스를 생성합니다.

 

 

 


Workbench 생성 확인

정상적으로 Workbench가 생성되었는지 확인합니다.

인스턴스를 생성하면 아래와 같이 프로비저닝을 진행하며 Workbench 인스턴스가 생성됩니다.

 

 

인스턴스 이름을 클릭하면 인스턴스의 세부정보를 확인할 수 있습니다.
현재 상태 뿐만 아니라 시스템, 하드웨어, 소프트웨어 및 보안, 상태, 모니터링, 로그 등 다양한 정보를 확인 및 수정하실 수 있습니다.

 

 

 


 

GCP에서 제공하는 VertexAI Workbench를 생성하는 방법에 대해 확인해봤는데요.

 

Vertex AI Workbench는 JupyterLab 기반의 머신러닝 개발 환경으로, 인스턴스 생성 시 머신 유형, 디스크, 네트워크, 보안, 시스템 상태 등을 상세히 설정할 수 있습니다.  Workbench 생성 후 콘솔에서 인스턴스 상태, 설정, 모니터링 정보를 실시간으로 확인하고 수정할 수 있으며, JupyterLab 환경을 사용하여 기계학습 환경을 구축할 수 있습니다.

 

기계학습을 사용할 기회가 있다면 Vertex AI를 사용하여 구현해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai/docs/workbench/introduction?hl=ko

 

 

 

[GCP] VertexAI 알아보기

GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.

 

GCP에서 제공하는 Vertex AI에 대해 알아보는 시간을 가져보겠습니다.

 

 


머신러닝 워크플로우

Vertex AI는 머신러닝의 전체 워크플로우를 하나의 플랫폼에서 지원합니다.


각 단계를 중심으로 Vertex AI의 역할을 설명하면, 사용자가 어떤 과정에서 Vertex AI를 활용할 수 있는지 쉽게 이해할 수 있습니다.

 

  • 머신러닝 단계
      1. 데이터 준비 : 데이터 세트를 추출하고 정리한 후 탐색적 데이터 분석(EDA)을 수행하여 ML 모델에서 예상하는 데이터 스키마와 특성을 파악합니다. 데이터 변환 및 특성 추출을 모델에 적용하고 데이터를 학습, 검증, 테스트 세트로 분할합니다.
      1. 모델 학습 : 모델 학습 방법을 선택하고 성능을 위해 조정합니다. 코드를 작성하지 않고 AutoML을 사용하여 모델을 학습하거나, 원하는 ML 프레임워크를 사용하여 학습 코드를 직접 작성하고 커스텀 모델을 학습시킬 수 있습니다.
      1. 모델 평가 및 반복 : 학습된 모델을 평가하고, 평가 측정항목을 기준으로 데이터를 조정하고, 모델을 반복합니다.
      1. 모델 서빙 : 모델을 프로덕션에 배포하고 온라인 예측을 가져오거나 일괄 예측을 위해 직접 쿼리합니다.
      1. 모델 모니터링: 배포된 모델의 성능을 모니터링합니다. 수신되는 예측 데이터로 모델을 재학습시켜 성능을 높입니다.

 

머신러닝 워크플로우를 통해 관리형 데이터셋을 이용해 데이터를 수집 및 가공하고, AutoML 또는 커스텀 모델로 학습한 후 Explainable AI로 성능을 분석 및 최적화할 수 있습니다. 또한, 배포된 모델을 엔드포인트에서 실시간 또는 배치 예측으로 활용하며, 콘솔 UI, 명령줄(CLI), SDK를 통해 자동화 및 애플리케이션과 연동할 수 있습니다.

 

 


MLOps

MLOps는 머신러닝 모델의 운영 및 관리를 위한 일련의 프로세스, 도구, 문화적 변화를 의미합니다.
Vertex AI는 MLOps의 핵심 기능을 지원하며, 머신러닝 모델을 효과적으로 배포하고 운영할 수 있도록 돕습니다.

 

Vertex AI의 MLOps 기능은 자동화(AutoML), 커스텀 모델(Custom Model), 파이프라인(Pipelines), 배포(Deployment), 모니터링(Monitoring) 등을 포함합니다.

 

Vertex AI를 활용한 MLOps 아키텍처는 다음과 같이 구성될 수 있습니다.

 

  • 1. 데이터 수집 및 전처리
    • BigQuery, Cloud Storage에서 데이터 수집
    • Feature Store를 활용한 피처 엔지니어링
  • 2. 모델 개발 및 실험 
    • Vertex AI Experiment를 사용한 모델 실험 및 최적화
    • AutoML 또는 Custom Model을 활용한 모델 학습
  • 3. ML 파이프라인 구축
    • Vertex AI Pipelines로 데이터 전처리 → 학습 → 평가 자동화
    • Hyperparameter tuning 포함
  • 4. 모델 배포
    • Vertex AI Prediction을 활용하여 온라인/배치 예측
    • Multi-model Deployment 및 A/B Testing 지원
  • 5. 모델 모니터링 및 개선
    • Model Monitoring으로 데이터 드리프트 감지
    • Explainable AI를 통한 모델 해석
    • CI/CD를 통한 지속적인 모델 업데이트

 

 

MLOps 도입 시에는 다음과 같은 장점이 있습니다.

  • 전체 ML 라이프사이클 자동화
  • 데이터 및 모델 재현성 보장
  • ML 모델 배포 및 확장 용이
  • 모델 성능 모니터링 및 지속적인 개선 가능
  • Cloud 기반으로 확장성과 유지보수 용이
  • DevOps + MLOps 통합으로 운영 효율성 향상

 


핵심 기능 및 강점

Vertex AI의 핵심 기능 및 강점입니다.

 

Vertex AI는 AutoML과 커스텀 모델을 지원하여 초보자부터 전문가까지 모두 활용할 수 있는 완전한 머신러닝 플랫폼입니다. Explainable AI 및 Google Cloud 기반의 고성능 인프라를 제공하여 효율적인 모델 개발과 배포를 지원합니다.

핵심 기능

  • AutoML 지원: 코드 없이 AI 모델을 학습 가능
  • 커스텀 모델 개발: TensorFlow, PyTorch 등 다양한 프레임워크 지원
  • Explainable AI: 모델의 예측 근거를 분석하여 최적화 가능
  • 완전한 머신러닝 파이프라인: 데이터 준비부터 배포까지 한 번에 관리 가능
  • 확장성과 유연성: Google Cloud 기반으로 고성능 인프라 활용 가능

 

Vertex AI의 강점

  • 초보자도 쉽게 사용 가능 (AutoML 지원)
  • 전문가는 커스텀 모델을 활용해 고급 개발 가능
  • 데이터 준비, 학습, 배포까지 중앙 집중형 관리
  • 설명 가능한 AI(Explainable AI) 기능 제공
  • Google Cloud의 강력한 인프라 활용 가능

 

 

Vertex AI는 AutoML 및 커스텀 모델 지원, Explainable AI, 완전한 머신러닝 파이프라인, Google Cloud 기반 인프라를 제공하여 효율적인 AI 개발과 운영을 지원합니다. 초보자는 AutoML로 쉽게 활용하고, 전문가는 커스텀 모델과 확장성 높은 인프라를 활용해 고급 머신러닝 프로젝트를 수행할 수 있습니다. 

 

 


GCP에서 제공하는 Vertex AI에 대해 기본적인 내용을 확인해봤는데요.

 

Vertex AI는 머신러닝의 전체 워크플로우를 지원하며, AutoML 및 커스텀 모델을 통해 데이터 준비부터 모델 배포까지 자동화할 수 있습니다. MLOps 기능을 활용해 모델 개발, 파이프라인 구축, 배포 및 모니터링을 효율적으로 관리할 수 있으며, Explainable AI 및 CI/CD를 통해 지속적인 개선이 가능합니다. Google Cloud 기반의 고성능 인프라를 활용하여 확장성과 유연성을 갖춘 머신러닝 운영을 최적화할 수 있습니다.

 

머신러닝을 사용할 기회가 있다면 Vertex AI를 사용하여 구현해보시기 바랍니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

[Reference]
https://cloud.google.com/vertex-ai?hl=ko

 

 

 

[DevOps] 2024 State of DevOps Report Part 3 (사용자 중심 접근)


State of DevOps Report는 2014년부터 시작되어 매년 발표되고 있으며, DORA(DevOps Research and Assessment) 팀이 연구를 주도하다가 이후 Google에 인수되어 현재까지 지속적으로 발표되고 있습니다. 해당 보고서에서는 배포 빈도, 변경 실패율, 복구 시간, 리드 타임 등의 핵심 지표를 기준으로 소프트웨어 개발 및 운영 성과의 DevOps 모범 사례와 생산성 향상 전략을 분석하고 있습니다.

 

이전 글에서는 2024년도의 State of DevOps Report 중 플랫폼엔지니어링의 내용을 중점으로 한번 알아봤는데요.
이번에는 사용자 중심 접근(User-Centered Approach) 내용을 중점으로 한번 알아보는 시간을 가져보겠습니다.

 

 

 


참고자료 - 2023 State of DevOps Report 소개

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

https://every-up.tistory.com/62

 

[DevOps] State of DevOps Report 2023 알아보기 1탄

[DevOps] State of DevOps Report 2023 알아보기 1탄지난 10월달에 "State of DevOps Report 2023" 이 나왔습니다!State of DevOps Report란 Google에서 DevOps를 연구하는 DORA라는 팀에서 발표하는 자료인데요.State of DevOps Repor

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 2탄

https://every-up.tistory.com/63

 

[DevOps] 2023 State of DevOps Report 알아보기 2탄

[DevOps] 2023 State of DevOps Report 알아보기 2탄지난번에는 State of DevOps Report 2023의 주요 결과에 대한 내용을 알아보는 시간을 가졌는데요.이번에는 더 자세하게 알아보기 위해 주요 내용 중 사용자 중

every-up.tistory.com

 

 

[DevOps] State of DevOps Report 2023 알아보기 3탄

https://every-up.tistory.com/64

 

[DevOps] 2023 State of DevOps Report 알아보기 3탄

[DevOps] 2023 State of DevOps Report 알아보기 3탄지난번 2탄에 이어서 3탄에도 State of DevOps Report 2023의 주요 내용을 상세하게 알아보는 시간을 가져보겠습니다.이번에는 인프라스트럭처와 문화에 대한

every-up.tistory.com

 

 

 


효과

2024 State of DevOps Report 내용 중 사용자 중심 접근(User-Centered Approach)의 내용을 중점으로 알아보겠습니다.
Report 내용은 한글로 번역 후 정리해봤으며, 번역 내용에 따라 원문과 의미가 조금 다를 수 있음을 사전에 알려드립니다.

 

주요 결과(요약)

보고서에서는 개발자가 만드는 것과 사용자가 필요로 하는 것 사이의 일치가 직원과 조직이 번창할 수 있도록 한다는 것을 다시 한번 발견했습니다.


개발자는 더 생산적이며, 사용자 중심적 사고방식으로 소프트웨어를 개발하면 번아웃을 경험할 가능성이 낮고, 고품질 제품을 만들 가능성이 더 높습니다. 소프트웨어는 사람을 위해 만들어지므로 개발자가 사용자 경험을 개선하는 소프트웨어 구축에 집중할 수 있도록 돕는 환경을 조성하는 것은 조직의 책임입니다. 또한 우선순위가 끊임없이 바뀌지 않는 안정적인 환경은 생산성의 작지만 의미 있는 증가와 직원의 번아웃의 중요하고 의미 있는 감소로 이어진다는 것을 발견했습니다.

 

환경적 요인은 개발되는 제품의 품질과 해당 제품을 만드는 개발자의 전반적인 경험에 상당한 영향을 미칩니다.

 

 

사용자 중심성 및 배포 빈도에 따른 제품 성능

사용자 중심성 및 배포 빈도에 따른 제품 성능의 관계입니다.

 

사용자 중심성이 높은 제품일수록 성능이 높으며, 배포 빈도와 관계없이, 사용자 중심성이 높은 제품은 성능이 일관되게 우수합니다. 사용자 중심성이 낮은 경우, 배포 빈도가 증가할수록 성능이 상승하긴 하지만, 다른 그룹에 비해 성능이 낮은 것을 확인할 수 있습니다. 배포 빈도의 증가가 제품 성능을 향상시키지만, 사용자 중심성에 따라 효과가 다릅니다. 따라서 단순히 배포를 빠르게 하는 것보다, 사용자 피드백을 반영하는 것이 더 중요합니다.

 

 

 

사용자 중심성 및 고품질 문서화에 따른 제품 성능

사용자 중심성 및 고품질 문서화에 따른 제품 성능의 관계입니다.

 

모든 사용자 중심성 그룹에서 문서 품질이 증가할수록 제품 성능이 상승됩니다. 사용자 중심성이 높을수록 문서 품질이 제품 성능에 더 큰 영향을 주며, 낮은 사용자 중심성에서는 문서 품질의 영향이 제한적입니다. 사용자 중심적 설계가 부족하면, 문서가 아무리 좋아도 제품 성능 향상에 큰 영향을 미치지 못할 수 있음을 시사합니다.



 


기타 결과

 

사용자 중심 접근 방식이 중요한 이유

일에서 목적의식이 조직과 직원 모두에게 긍정적 영향을 줍니다.

 

연구에 따르면, 일에서 의미를 찾는 것이 중요하며, 93%의 근로자가 자신의 일이 의미 있다고 느끼는 직업을 가지는 것을 중요하게 생각하고 있습니다. 또한 의미 있는 일을 할 경우, 미래 수입 23%를 포기할 의향이 있다는 것으로 나타났습니다. 이는 사람들에게 동기부여와 몰입도를 증가시켜 조직 생산성을 향상시킬 수 있습니다.

 

 

명확한 방향성을 제공

소프트웨어 개발에 대한 사용자 중심적 접근 방식은 개발자가 자신의 작업을 보는 방식을 근본적으로 바꿀 수 있습니다.

 

임의의 기능을 제공하고 사용자가 이를 사용할지 추측하는 대신, 개발자는 사용자 피드백을 통해 무엇을 빌드할지 우선순위를 정할 수 있습니다. 이러한 접근 방식은 개발자에게 자신이 작업하는 기능이 존재하는 데 이유가 있다는 확신을 주며 작업에 의미를 가지게 됩니다. 사람들이 제품과 서비스를 사용할 때 뛰어난 경험을 할 수 있도록 하는 것입니다. 이를 통해 개발자는 자신이 만든 소프트웨어를 통해 자신의 작업이 미치는 직접적인 영향을 확인할 수 있습니다

 

 

 


 

 

2024년도의 State of DevOps Report 중 사용자 중심 접근의 내용을 중점으로 주요 내용을 확인해봤는데요.

 

State of DevOps Report 중 다른 내용으로 다뤄볼 주제가 있다면 상세하게 확인해보는 시간을 다시 가져보겠습니다....! 끝...!

 

 

유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!

 

 

 

+ Recent posts