[AWS] SageMaker Notebook 알아보기

Amazon SageMaker에서는 기계 학습을 수행하기 위한 Jupyter Notebook을 제공합니다. Jupyter Notebook으로는 두 가지 유형인 Studio Notebook과 Notebook Instance가 있습니다.


Amazon SageMaker의 Notebook이 무엇인지, 두 가지 유형인 Studio Notebook과 Notebook Instance는 각각 어떻게 다른지 알아보는 시간을 가져보겠습니다.

 

 

Studio Notebook

Amazon SageMaker Studio는 통합 개발 환경(IDE)으로서 머신러닝 워크플로우를 완전히 관리하고 실행할 수 있는 환경을 제공하는데요. Studio Notebook은 SageMaker Studio 내에서 실행되는 Jupyter Notebook으로 아래와 같이 다양한 특징과 장점을 가지고 있습니다.

 

  • 사용 화면
    • SageMaker Studio 서비스의 Studio 메뉴에서 관리되며 통합 개발 환경(IDE)으로 사용 가능

 

  • 작동 방식

 

  • 통합 개발 환경
    • SageMaker Studio에서는 Jupyter Notebook 외에도 터미널, 텍스트 편집기, 디버거 등 다양한 개발 도구와 기능을 함께 제공하여 완전한 개발 환경을 제공합니다.
  • 프로젝트 기반 작업
    • SageMaker Studio는 프로젝트 기반 작업을 지원하여 여러 노트북과 스크립트를 조직화하고 버전 관리를 수행할 수 있습니다.
    • 노트북과 코드 스크립트, 데이터, 실험, 모델 등을 프로젝트 단위로 구성하여 효율적인 개발과 관리가 가능합니다.
  • 리소스 관리
    • SageMaker Studio는 자동으로 리소스를 관리하므로 Instance 프로비저닝, 확장, 관리 등에 대한 별도의 관리 작업이 필요하지 않습니다.
    • 즉, 개발자는 리소스 프로비저닝 및 관리에 시간을 투자할 필요 없이 코드 작성과 실험에 집중할 수 있습니다.
  • 공동 작업 및 협업
    • SageMaker Studio는 팀 내에서 여러 사용자가 동시에 작업할 수 있도록 공동 작업 및 협업을 지원합니다.
    • 다른 팀원과 노트북, 코드, 데이터, 실험 등을 쉽게 공유하고 협업할 수 있습니다.
  • 통합된 데이터 탐색 및 시각화
    • SageMaker Studio는 데이터 탐색 및 시각화 기능을 내장하고 있어 데이터 분석 및 전처리 작업을 지원합니다.
    • 데이터 세트를 탐색하고 시각화하여 데이터의 특성을 이해하고 모델 개발에 활용할 수 있습니다.

 

 

 

Notebook Instance

Amazon SageMaker Notebook Instance는 단일 사용자용 Jupyter Notebook 환경으로, 개별적으로 프로비저닝되고 관리되는 서비스입니다. 사용자가 필요에 따라 Instance를 생성하고, 기계 학습 작업을 수행할 수 있으며 아래와 같이 다양한 특징과 장점을 가지고 있습니다.

 

  • 사용 화면
    • SageMaker Studio 서비스의 Notebook 메뉴에서 관리되며 Instance 생성 및 제거 등의 작업이 가능함

 

  • 작동 방식

 

  • 노트북 개인화
    • Notebook Instance는 개별 사용자에게 제공되며, 사용자는 Instance를 자신의 개인 작업 환경으로 설정할 수 있습니다.
    • 필요한 라이브러리, 패키지, 환경 설정 등을 자유롭게 선택하여 사용할 수 있습니다.
  • 리소스 컨트롤
    • Notebook Instance를 개별적으로 프로비저닝하고 관리할 수 있습니다.
    • Instance 유형, 스토리지 용량, 컴퓨팅 성능 등을 사용자가 직접 제어할 수 있습니다.
  • 유연한 사용
    • Notebook Instance는 필요에 따라 생성하고 삭제할 수 있습니다. 작업이 끝나면 Instance를 종료하여 비용을 절약할 수 있습니다.
    • 여러 개의 Instance를 생성하여 병렬로 작업을 수행할 수도 있습니다.
  • 코드 공유 및 협업
    • Notebook Instance는 코드, 데이터, 노트북 등을 저장하고 다른 사용자와 공유할 수 있는 기능을 제공합니다.
    • 코드 리뷰, 협업, 지식 공유 등을 원활하게 수행할 수 있습니다.
  • 확장성
    • SageMaker Notebook Instance는 다양한 Instance 유형과 사양을 선택할 수 있어 작업에 맞게 확장할 수 있습니다.
    • 필요에 따라 Instance 유형을 업그레이드하거나 다수의 Instance를 사용하여 성능을 향상시킬 수 있습니다.

 

 

비용

Amazon SageMaker Notebook의 비용은 선택한 Instance 유형, Instance 수, 스토리지 크기, 데이터 전송량 등 다양한 요소에 따라 달라질 수 있습니다. 실제 사용 비용을 예측하기 위해서는 아래 비용 요소들을 통해 예측하거나, 실제 사용해 보면서 비용을 예측해 볼 수 있을 것 같습니다.

 

  • Instance 비용
    • SageMaker Notebook은 EC2 Instance 위에서 실행되므로, Instance 유형과 Instance 수에 따라 비용이 결정됩니다.
    • 또한 시간당 또는 사용량에 따른 요금이 부과됩니다.
  • 스토리지 비용
    • SageMaker Notebook은 사용자 데이터 및 노트북 파일을 저장하기 위한 스토리지를 필요로 합니다.
    • 이는 EBS(Elastic Block Store)로 제공되며 사용한 스토리지 용량 및 유형에 따라 추가 비용이 발생할 수 있습니다.
  • 데이터 전송 비용
    • SageMaker Notebook은 데이터를 다운로드 및 업로드 시 데이터 전송 비용이 발생할 수 있습니다.
    • 데이터를 S3에서 노트북으로 다운로드 받거나 노트북에서 S3로 업로드하는 경우 데이터 전송 비용이 발생할 수 있습니다.
  • 추가 서비스 비용
    • SageMaker Notebook은 SageMaker의 Data Wrangler, Autopilot, Ground Truth 등 다른 SageMaker 서비스와 연동 시 추가 비용이 발생할 수 있습니다.

 

 

 

지금까지 Amazon SageMaker의 Notebook이 무엇인지 알아보는 시간이었습니다....! 끝...!

 

 

[Reference]

[AWS] SageMaker Studio 알아보기

Amazon SageMaker를 통해 내부 기계 학습 환경을 AWS Cloud 환경으로 옮기고, MLOps를 지원할 수 있도록 구성하는 작업을 진행 중에 있습니다. Amazon SageMaker의 Studio를 통해 웹 기반 시각적 인터페이스로 학습 데이터 준비부터 기계 학습 모델 구축, 훈련, 배포에 이르기까지 모든 기계 학습(ML) 개발 단계를 손쉽게 수행할 수 있는데요. Amazon SageMaker의 Studio가 무엇인지 좀 더 알아보는 시간을 가져보겠습니다.


주요 기능

Amazon SageMaker Studio의 주요 기능 다섯 가지는 아래와 같습니다.

  • Jupyter 노트북에서 코드 작성 및 실행
  • 기계 학습을 위한 데이터 준비
  • 기계 학습 모델 빌드 및 훈련
  • 모델 배포 및 예측 성능 모니터링
  • 기계 학습 실험의 추적 및 디버그

 

그 외의 세부적인 기능으로는 데이터로부터 모델을 자동으로 생성하는 기능인 Autopilot, 데이터 전처리 및 시각화를 위한 인터페이스를 제공하는 Data Wrangler, 모델의 관리와 버전 관리를 위한 중앙 저장소 기능인 Model Registry 등 여러가지 기능을 제공하고 있습니다.


작동 방식

작동 방식을 확인해보면 실제 학습 데이터를 준비하고 학습 시 사용할 수 있도록 저장 및 가공하는 작업을 거치게 됩니다. 그 이후에는 모델을 학습하고, 학습이 완료된 모델은 저장하여 관리하거나 실제 운영 환경에 자동으로 배포할 수 있습니다. 또한 생성된 모델을 자동으로 테스트하고, 테스트 결과를 모니터링 등을 통해 확인할 수도 있습니다.


화면

Amazon SageMaker 메인 화면에서 Studio 메뉴를 통해 접근할 수 있으며 Open Studio 버튼을 클릭하여 웹 기반 인터페이스르를 접근할 수 있습니다.

 

 

웹 기반 인터페이스에서는 Data, AutoML, Notebook jobs, Pipelines 등의 여러가지 기능을 관리할 수 있습니다.

 

 

Running Terminals and Kernels 메뉴에서는 현재 실행되고 있는 Studio Notebook과 Notebook Instance, Teminal 등을 확인하고 관리할 수 있습니다.

이 외에도 SageMaker에서 사용할 수 있는 다양한 기능들을 Studio를 통해 사용하실 수 있습니다.

 

 

지금까지 Amazon SageMaker의 Studio가 무엇인지 알아보는 시간이었습니다....! 끝...!

 

 

[Reference]

[Linux] RPM 패키지 상세 정보 확인하기

rpm 명령어를 사용하여 RPM 패키지 설치 및 이름, 버전, 빌드 시간 등의 상세 정보를 확인할 수 있는데요. 저는 rpm 명령어를 통해 Ansible로 Deploy 시 Deploy 환경의 RPM 패키지 버전 등의 상세 정보를 확인하여 버전에 따라 로직을 구분할 때 사용하였습니다.

 

 

 

rpm 명령어에 -qip 옵션을 추가하여 RPM 패키지를 지정하면 아래와 같이 이름, 버전, 빌드 시간 등의 상세 정보를 확인하실 수 있습니다.

# rpm -qip ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm
Name        : ntp
Version     : 4.2.6p5
Release     : 29.el7.centos.2
Architecture: x86_64
Install Date: (not installed)
Group       : System Environment/Daemons
Size        : 1434385
License     : (MIT and BSD and BSD with advertising) and GPLv2
Signature   : RSA/SHA256, 2020년 06월 24일 (수) 오전 02시 36분 52초, Key ID 24c6a8a7f4a80eb5
Source RPM  : ntp-4.2.6p5-29.el7.centos.2.src.rpm
Build Date  : 2020년 06월 24일 (수) 오전 12시 38분 26초
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.ntp.org
Summary     : The NTP daemon and utilities
Description :
The Network Time Protocol (NTP) is used to synchronize a computer's
time with another reference time source. This package includes ntpd
(a daemon which continuously adjusts system time) and utilities used
to query and configure the ntpd daemon.

Perl scripts ntp-wait and ntptrace are in the ntp-perl package,
ntpdate is in the ntpdate package and sntp is in the sntp package.
The documentation is in the ntp-doc package.

 

 

rpm 명령어의 다양한 옵션을 사용할 수 있으며 아래 링크를 통해 추가적인 옵션을 확인하시기 바랍니다.
https://rpm-software-management.github.io/rpm/man/rpm.8.html

[AWS] AWS Summit Seoul 2023 2일차

오늘 AWS Summit Seoul 2023 2일차를 다녀왔습니다...! 1일차에 비해 오시는 분들이 조금 줄어들지 않을까 생각했는데요. 하지만 1일차와 거의 비슷하게 많은 분들이 참석해주신 것 같습니다. 어제인 1일차에는 산업 업종별 강연을 통해 각 서비스 업종별, 사용했던 기술별로 다양한 레퍼런스를 들을 수 있어서 너무 좋은 시간이었습니다. 

 

2일차는 기술 주제별 강연으로 EC2, 스토리지, EKS, SageMaker 등 AWS에서 제공하는 다양한 서비스와 SaaS 서비스를 통해 Public Cloud를 더욱 효과적으로 사용할 수 있도록 도와주는 Datadog, SnowFlake 등 다양한 기술을 알아가는 기회가 될 수 있었습니다.

 

기술 주제별 강연이므로 아래와 같이 입문 기술, 중급 기술, 심화 기술, 커뮤니티 등으로 강연이 나눠져 있었습니다. 저는 아직 AWS에 대해서 많이 부족하여 입문이라고 생각하지만 SageMaker, SaaS, EKS, Observability 등 다양한 기술에 관심이 있어 다양한 주제의 강연을 들었습니다.

 


기조연설은 AWS 수석 테크 에반젤리스트인 윤석찬님이 진행해주셨습니다. AWS 서버리스 컴퓨팅 부사장인 Holly님은 영상으로 Summit Seoul에 전달하고 싶은 내용을 전달해주셨으며 이후에는 Flitto CTO인 강동한님과 LG U+ 연구위원인 송주영님이 윤석찬님과 Q&A 시간을 가지면서 AWS Public Cloud에 대한 이야기를 나눴습니다.

 

기조연설에서는 윤석찬님은 On-Premise 환경에서 Public Cloud로 서비스 운영 환경이 변화하면서 어떤 부분이 많이 변화하였는가를 말씀해주셨는데요. 변화된 부분 중 가장 큰 두가지의 변화를 이벤트 기반의 아키텍처 도입과 서버리스 서비스의 사용을 말씀해주셨습니다. Lambda, Fargate, API Gateway 등 다양한 서버리스 서비스를 통한 인프라 관리 비용 절감과 처리속도 등의 장점을 설정해주셨으며 이를 이벤트 기반으로 아키텍처를 설계하여 사용한다고 말씀해주셨습니다. 마지막으로는 서버리스 기반 천만 사용자 아키텍처에 대한 설명도 해주셨습니다.

 

이후에는 윤석찬님이 MC를 진행하고 강동한님, 송주영님이 각각 스타트업, 대기업 관점으로 Public Cloud 사용에 대한 Q&A 시간을 가졌는데요. SaaS 서비스를 구축하면서 어려웠던 부분을 극복하는 과정과 SaaS 서비스를 구축하기 위해서 반드시 필요한 요소들에 대해 각자의 생각을 공유해주셨습니다.

 


아래 사진은 2일차 기술 주제별 강연이며 제가 참여한 컨퍼런스를 체크해봤습니다. 직접들을 수 있는 6개의 강연 중 4개의 강연을 듣고 나머지 시간은 Expo를 탐방하는 시간을 가졌습니다.

전체 강연 아젠다는 아래 링크를 통해 확인하실 수 있습니다.

https://pages.awscloud.com/rs/112-TZM-766/images/AWS%20Summit%20Seoul%202023%20-%20Agenda.pdf

 

 

[ Amazon EKS, 중요한건 꺽이지 않는 안정성 ]

Amazon EKS에 대한 지식이 부족했지만 kubernetes를 사용해본 경험을 통해 EKS 관련 강연을 듣게 되었습니다. 컨트롤 플레인과 데이터 플레인 각각에 대한 안정성을 설정해주셨는데요. kubernetes의 기능인 readinessProbe, livenessProbe 등을 통해 Pod의 상태를 확인하고, Pod 확장과 노드 확장인 HPA(Horizontal Pod AutoScaler), CA(Cluster Auto Scaler) 등의 오토스케일을 통해 안정성을 보장하는 것을 설명해주셨습니다. Kubernetes 클러스터 오토스케일러 오픈소스인 Karpenter에 대한 소개도 해주셨으며, Kubernetes 버전 업데이트 전략에 대해서도 설명해주셨습니다.

 

[ 천만 사용자 서비스를 위한 Amazon SageMaker 활용 방법 진화하기 ]

Amazon SageMaker를 통한 MLOps를 작업하고 있어 SageMaker에 대한 기대가 높은 상태로 강연을 듣게 되었습니다.

각각의 사용자 수에 따른 MLOps 전략과 이에 따른 SageMaker 사용 방법을 설명해주셨는데요. 100만 사용자, 1000만 사용자가 넘어갔을 때의 아키텍처는 생각보다 많이 복잡했습니다. 대규모 학습, 대규모 트래픽에 따른 대응, 고성능 추론 아키텍처 등 다양한 전략이 필요함을 설멸해주셨습니다. 추가적으로 비용 절감을 위한 기계학습 전용칩 기반 인스턴스를 사용하면 좋다는 내용도 말씀해주셨습니다. SageMaker 강연을 통해 다양한 부분을 생각하면서 MLOps를 구성해야겠다는 생각을 하게되었습니다.

 

 

이후 강연을 통해서도 여러가지 지식을 얻을 수 있었습니다.

 

 

강연 이후에는 Expo를 통해 AWS Public Cloud 환경에서 SaaS 서비스를 하고 있는 다양한 기업과 서비스를 확인할 수 있었는데요. 금융, 의료, 개발도구, 모니터링, 메타버스 등 정말 다양한 분야의 서비스가 SaaS를 통해 서비스를 운영하고 있다는 것을 알게되었습니다. 언젠가는 제가 담당하는 SaaS 서비스가 출시하고 성장하면, AWS Summit Seoul과 같은 IT 컨퍼런스에 참여하는 기회가 되면 좋을 것 같습니다.

 

이틀동안 AWS Summit Seoul 2023을 통해 AWS와 Public Cloud, SaaS 등에 대한 전반적인 지식을 얻을 수 있어 좋았고, 오랜만에 오프라인 컨퍼런스에 참여하게 되어서 더욱 더 좋았습니다. 다음에도 AWS Summit Seoul과 같은 IT 컨퍼런스가 있다면 참여하여 좋은 기회가 되면 좋겠습니다...끝..!

 

 

[AWS] AWS Summit Seoul 2023 1일차

최근에 AWS SaaS Boot Camp를 참여하여 AWS와 SaaS에 대한 관심이 엄청 커진 상태에서 이번에는 AWS Summit Seoul 2023에 참여하게 되었습니다. AWS Summit Seoul은 국내 최대 IT 컨퍼런스로 코엑스 컨벤션 센터에서 5월 3일(수)~ 4일(목) 일정으로 이틀간 진행하며 이번에 9회차를 맞고, 저는 첫 번째로 참여하게 되었습니다. 다양한 분야의 전문가들과 다양한 주제로 컨퍼런스를 참여할 수 있어 기분이 좋았습니다.

 

 

코엑스 컨벤션 센터의 지하 1층부터 지상 3층까지 컨퍼런스 공간이 마련되어 있었습니다.

 

 

1층에 있는 Expo에는 다양한 전시와 체험할 수 있는 부스가 있었지만 시간이 많지 않았기 때문에 바로 기조연설을 참석하기위해 이동했습니다. 기조연설 컨퍼런스룸으로 이동하기전 그랜드볼룸 앞에는 AWS Summit Seoul 참여 횟수에 따른 랜덤 캡슐을 뽑는 부스가 있었는데요. 저는 첫 번째 참여였기 때문에 1회차 랜덤 캡슐을 뽑고 스티커를 받았습니다..!

 

아래는 랜덤으로 뽑은 스티커입니다. 다른 회차는 다른 상품이 있는지 좀 궁금하군요..ㅎㅎ

 

 


기조연설은 AWS 모니터링 및 관측성 담당 부사장인 Nandini님과 AWS Korea 대표이사 함기호님 등을 포함하여 AWS에 큰 기여를 하고 있거나 적용 사례를 가지고 있는 분들이 진행해주셨습니다.

 

기조연설은 오디토리움에서 진행되었고, 생각보다 엄청 넓은 공간이었고 준비가 잘 되어있는 것 같아 기대가 되었습니다.

기조연설은 AWS가 과거부터 어떻게 성장해왔고, 앞으로 고객들을 위해 어떤 방향으로 발전해나갈 것인지 설명해주셨습니다. 또한 AWS에 있는 다양한 서비스들을 통해 빠른 속도, 비용 절감, 고가용성 등의 이점을 살릴 수 있고, AWS를 통해 서비스 구축 시 어떤 포인트들을 생각하면서 아키텍처를 설계해야되는지 설명해주셨습니다. 기조연설을 통해 AWS의 전반적인 앞으로의 방향성과 다양한 이점에 대해서 리마인드되는 시간이었던 것 같습니다.

 


기조연설이 끝나고 이제 컨퍼런스를 듣기위해 컨퍼런스룸으로 움직였습니다. 1일차에는 산업 업종별 강연과 2일차에는 기술 주제별 강연을 이뤄져 있었습니다. 1일차에는 클라우드 네이티브, 메가트렌드, 금융 및 핀테크, 통신 및 미디어, 리테일 및 디지털커머스, 제조 및 하이테크, 공공 부문 분야가 있었고 저는 클라우드 네이티브와 메가트렌드 분야를 중점으로 컨퍼런스를 참여하였습니다.

 

아래 사진은 1일차 산업 업종별 강연 내용이며 제가 참여한 컨퍼런스를 체크해봤습니다.

전체 강연 아젠다는 아래 링크를 통해 확인하실 수 있습니다.

https://pages.awscloud.com/rs/112-TZM-766/images/AWS%20Summit%20Seoul%202023%20-%20Agenda.pdf

 

 

산업 업종별 강연이다보니 각 서비스 업종별, 사용했던 기술별로 다양한 레퍼런스를 들을 수 있어서 너무 좋은 시간이었습니다. SaaS 서비스를 준비 중이다보니 AWS Public Cloud에서 SaaS 서비스 구축를 위한 시스템 아키텍처 설계, 대규모 트레픽을 처리하기 위한 방법, 안정적인 서비스 운영 방법, Observability를 통한 FinOps 등 다양한 지식을 얻을 수 있었습니다. 또한 AI와 MLOps 등에도 관심이 많았기 때문에 Generative AI로 SaaS 서비스를 운영하고 있는 스캐터랩의 AWS 활용법 사례를 듣는 시간 또한 너무 좋은 시간이었습니다.

 

 

 

내일인 2일차에는 기술 주제별 강연입니다. SageMaker와 SaaS 서비스 관련 최적화와 관련된 컨퍼런스를 들을려고 합니다. 관련 지식을 통해 실제 SageMaker를 통한 MLOps 구축과 SaaS 서비스 준비에 많은 도움이 되었으면 하는 바람이 큽니다. 두근두근한 마음으로 AWS Summit Seoul 2023 2일차를 참여하도록 하겠습니다....!!

 

 

[Linux] Rocky 설치하기

현재 많이 사용하고 있는 Linux 배포판인 CentOS 7의 EOL이 2024년 6월 30일로 얼마 남지 않았습니다. 이에 따라 CentOS 7을 사용하는 많은 분들이 어떤 OS로 넘어갈지 고민에 빠져있을 것 같습니다. CentOS 7을 대체하기 위해서 Rocky Linux가 주목받고 있으며있으며 Rocky Linux를 설치하는 방법을 알아봅시다.

 

 

ISO 파일 다운로드

Rocky Linux 공식 홈페이지에서 최신 Rocky Linux 8 버전을 다운로드 받습니다.
최신 버전은 2022년 11월 14일에 Release된 8.7 버전입니다.
https://rockylinux.org/download/

 

 

Rocky Linux 설치

Rocky Linux의 기본적인 설치 방법은 CentOS 7과 거의 동일하며 기존에 CentOS 7을 설치해보신 분들이라면 편하게 설치를 진행하실 수 있을 것 같습니다. 저는 Rocky Linux를 설치하기 위해 Hyper-V를 통해 진행하였습니다.

 

 

VM 실행 후 Rocky Linux 8 설치 화면에서 Install Rocky Linux 8을 선택합니다.

 

 

로딩 화면 후 설치 화면이 나오는데요. CentOS 7과 거의 동일한 것을 확인하실 수 있습니다. 언어 설정은 영어를 선택 후 넘어갑니다.

 

설치 메뉴 중 아래 화면에 체크한 항목을 설정 후 설치를 진행해보도록 하겠습니다.

 

첫 번째로는 TIME & DATE 설정입니다. Asia/Seoul로 설정합니다. 시간 설정은 설치 완료 후에도 수동으로 변경할 수 있습니다.

 

두 번째로는 SOFTWARE SELECTION 설정입니다. 저는 필요한 패키지만 설치하여 사용하기 위해 Server With GUI가 아닌 Minimal Install을 선택하였습니다. 기본 서버에 필요한 패키지를 설치하시려면 Server, 추가로 GUI 화면이 필요하시면 Server With GUI을 선택하시면 됩니다.

 

 

세 번째로는 INSTALLATION DESTINATION 설정입니다. 저는 수동으로 디스크를 설정하기위해 Custom을 선택하였습니다. 자동으로 설정되는 Automatic을 설정하셔도 상관 없습니다.

 

기본 디스크가 설정되도록 Click here to create them automatically를 선택합니다.

 

/home 디렉토리를 사용하지 않고 / 디렉토리만을 사용하기 위해 /home 디렉토리를 삭제하고 남은 디스크 용량을 / 디렉토리에 할당합니다.

 

설정 변경사항을 확인 후 적용합니다.

 

네 번째로는 KDUMP 설정입니다. 기본 설정은 사용하도록 체크되어있으며 사용하지 않을 것이므로 해제합니다.

 

마지막으로 ROOT PASSWORD 설정입니다. 설정하고자하는 ROOT PASSWORD를 입력하여 설정합니다.

 

설정이 완료되면 Begin Installation 버튼을 클릭하여 설치를 진행합니다.

 

설치가 진행되고 완료되면 Reboot System 버튼을 클릭하여 시스템을 재시작 합니다.

 

 

이제 시스템 부팅이 완료되면 설치된 Rocky Linux 커널 버전을 확인하실 수 있고, 로그인을 통해 Rocky Linux를 사용하실 수 있습니다.

 

 

 

지금까지 Rocky Linux를 간단히 설치하는 방법을 알아보았습니다...! 끝...!

 

 

[AWS] Amazon SageMaker 알아보기

 

AWS의 Amazon SageMaker를 통해 기존에 물리서버에서 하고있었던 기계 학습(Machine Learning) 환경을 Public Cloud 환경에서도 구현가능한지 확인해보고, 비용 측면이나 활용도 측면에서도 정말 좋은지 확인해보고자 작업을 진행하고 있습니다. Amazon SageMaker를 활용하기 위해 좀 더 알아본 내용과 AWS SageMaker 교육을 통해 알아본 내용을 같이 정리해보았습니다.

 

 

개요

Amazon SageMaker는 AWS에서 2017년 11월에 출시된 Cloud 기계 학습(Machine Learning) 서비스 입니다.

 

SageMaker를 사용하면 개발자가 Cloud 환경에서 기계 학습 모델을 생성, 학습 및 배포할 수 있습니다. 기계 학습을 위해 다양한 언어를 지원할 뿐만 아니라 학습 환경 구성, 학습, 배포하기 위한 pipeline을 제공하여 MLOps를 구현할 수도 있습니다. EC2에서 사용가능한 다양한 GPU 인스턴스를 제공하여 적합한 사양의 서버를 사용하여 기계 학습 시 사용할 수 있습니다. 제품 추천, 개인화, 지능형 쇼핑, 로봇 공학, 음성 지원 디바이스를 포함하여 20년에 걸친 Amazon의 실제 기계 학습 애플리케이션 개발 경험에 기반하여 구축된 서비스입니다.

 

 

사용 효과

아래 이미지는 AWS의 자료로 Amazon SageMaker를 사용하면 다양한 사용 효과를 얻을 수 있다고 합니다.

  • TCO(Total Cost of Ownership) : IT 인프라를 구매, 설치, 실행 및 유지 관리하는 과정에서 발생하는 모든 비용

개인적인 생각으로는 AWS의 GPU 인스턴스의 가격이 저렴하진 않기 때문에 비용적인 측면은 많은 고민이 필요할 것 같지만, MLOps를 구현한다면 팀 생산성 증가와 자동화로 인한 비용 감소를 예측할 수 있을 것 같다는 생각이 듭니다.

 

 

다양한 지원

선도적인 기계 학습 프레임워크, 도구 키트 및 프로그래밍 언어 등 다양한 지원을 통해 더욱 자유롭고 효율적으로 Amazon SageMaker를 사용할 수 있도록 지원하고 있습니다.

프로그래밍 언어 같은 경우에는 다양한 언어를 지원하지만 내부적으로 python을 기준으로 동작한다고하니 참고하시면 좋을 것 같습니다.

 

 

다양한 기능

기계 학습에 기본적으로 필요한 Train, Pipelines, Deploy 등 뿐만 아니라 기계 학습 환경을 자유롭고, 간단하게 구성하기 위한 Notebooks, Model Monitor, Studio, Feature Store, Automatic Model Tuning 등 다양한 기능을 제공하고 있습니다.

  • Amazon SageMaker Features

다양한 기능을 사용하여 최적의 학습 환경 및 MLOps를 구축할 수 있을 것 같습니다.

 

사용 고객

아래 이미지는 AWS의 자료로 Amazon SageMaker를 해외 기업뿐만 아니라 국내 기업에서도 Amazon SageMaker를 많이 사용하고 있는 것을 확인하실 수 있습니다.

AWS 기술 블로그에서는 Amazon SageMaker를 사용하여 모델을 개발하거나, 어떤식으로 사용하였는지 다양한 정보를 확인하실 수 있습니다.

 

[ Amazon SageMaker로 컬리(Kurly) 상품 후기 분류 모델 개발하기 ]

[ 농심의 Amazon SageMaker를 활용한 원자재 가격예측과 MLOps 여정 ]

 

 

 

지금까지 Amazon SageMaker가 어떤 것인지 알아본 내용을 정리해봤는데요. 실제 Amazon SageMaker를 사용해보면서 어떻게 사용하고 활용할 수 있는지 차차 정리해보도록 하겠습니다. 그럼 이만...! 끝...!

 

 

 

[Reference]

[Jenkins] Jenkins Pipeline Artifacts 활용하기

Jenkins 에서는 Artifact 플러그인 기능을 사용하여 생성된 Artifact를 저장하거나 복사하여 필요한 프로젝트 및 빌드에서 사용할 수 있습니다. Jenkins Pipeline에서 Artifacts 기능을 활용하는 방법을 알아봅시다.

 

 

Artifacts 정의

우선 Artifacts 기능을 활용하기 전에 Artifacts에 대한 정의를 알아봅시다.

 

위키백과에서는 Artifacts를 소프트웨어 개발 과정에서 생성되는 다양한 유형의 부산물 중 하나라고 설명하고 있습니다. 일부 Artifacts(예: 사용 사례, 클래스 다이어그램 및 기타 UML(Unified Modeling Language) 모델, 요구 사항 및 디자인 문서)는 소프트웨어의 기능, 아키텍처 및 디자인을 설명하는 데 도움이 되고, 다른 Artifacts는 프로젝트 계획, 비즈니스 사례 및 위험 평가와 같은 개발 프로세스 자체와 관련이 있다고 설명하고 있습니다.

https://en.wikipedia.org/wiki/Artifact_(software_development)

 

Artifact (software development) - Wikipedia

From Wikipedia, the free encyclopedia An artifact is one of many kinds of tangible by-products produced during the development of software. Some artifacts (e.g., use cases, class diagrams, and other Unified Modeling Language (UML) models, requirements and

en.wikipedia.org

 

소프트웨어 개발 과정에서 생성되는 다양한 형태의 요소들을 모두 Artifacts로 정의하고 있으며 제 개인적인 생각으로는 소스 코드를 통해 생성되는 실행(바이너리) 파일 및 라이브러리들이 이와 같다고 생각됩니다.

 

 

Artifact 플러그인 설치

Artifact 기능을 사용하기 위해 Copy Artifact 플러그인을 설치해줍니다. 플러그인은 "Jenkins 관리 -> 플러그인 관리" 메뉴에서 설치가 가능합니다.

Copy Artifact 플러그인을 설치 완료하면 Pipeline에서 archiveArtifacts{} 구문과 copyArtifacts{} 구문을 사용할 수 있습니다.

 

 

Artifact 사용

Pipeline에서 archiveArtifacts{} 구문을 사용하여 실행(바이너리) 파일 및 라이브러리들을 저장하고, copyArtifacts{} 구문을 사용하여 저장되어있는 Artifact 파일들을 복사하여 필요한 프로젝트 및 빌드에서 사용할 수 있습니다.

 

Artifact 저장 (archiveArtifacts)

저장할 파일 경로 또는 패턴을 필수 값인 artifacts을 통해 지정할 수 있으며 optional을 통해 추가적인 옵션을 추가할 수 있습니다. 기본적인 구문은 아래와 같이 사용됩니다.

 

*.txt로 끝나는 파일들을 Artifact에 저장하는 설정입니다.

archiveArtifacts artifacts: '**/*.txt', (optional)

 

 

artifacts로 파일 및 디렉토리 지정 시 glob 형식의 패턴을 통해 아래와 같이 사용할 수 있습니다.

### target 디렉토리에 있는 main.jar 파일 지정
archiveArtifacts artifacts: 'target/main.jar'

### target 디렉토리에 있는 *.jar 파일 지정
archiveArtifacts artifacts: 'target/*.jar'

### target 디렉토리에 있는 *.jar 파일과 *.war 파일 지정
archiveArtifacts artifacts: 'target/*.jar, target/*.war'

### 모든 디렉토리에 있는 *.jar 파일 지정
archiveArtifacts artifacts: '**/*.jar'

 

여러 옵션을 사용하여 아래와 같이 사용할 수도 있습니다.

  • excludes: 디렉토리 경로 및 파일의 패턴을 지정하여 제외할 수 있습니다. 설정 패턴은 artifacts와 동일하게 사용 가능합니다.
  • allowEmptyArchive: 빌드 아티팩트가 없는 경우도 아카이브에 추가할지 여부를 결정합니다. 기본값은 false이며, true로 설정하면 아카이브가 빈 상태가 될 수 있습니다.
  • caseSensitive: 아카이브 내 파일 이름 검색시 대소문자를 구분할지 여부를 결정합니다. 기본값은 false이며, true로 설정하면 대소문자를 구분합니다.
  • defaultExcludes: 아카이브에서 기본적으로 제외할 파일을 결정합니다. 기본값은 true이며, false로 설정하면 Ant 파일 패턴을 사용하여 제외할 파일을 지정할 수 있습니다.
  • fingerprint: 빌드 아티팩트의 지문(fingerprint)을 생성하여 추적할지 여부를 결정합니다. 기본값은 false이며, true로 설정하면 빌드 아티팩트가 변경될 때마다 새로운 지문이 생성됩니다.
  • followSymlinks: 심볼릭 링크를 따라가서 링크가 가리키는 실제 파일을 아카이브할지 여부를 결정합니다. 기본값은 false이며, true로 설정하면 심볼릭 링크가 아닌 실제 파일이 아카이브됩니다.
  • onlyIfSuccessful: 빌드가 성공했을 때만 아카이브를 생성할지 여부를 결정합니다. 기본값은 false이며, true로 설정하면 빌드가 실패했을 때는 아카이브를 생성하지 않습니다.

 

 

Artifact 복사 (copyArtifacts)

archiveArtifacts{} 구문을 통해 저장된 파일을 copyArtifacts{} 구문을 통해 복사할 수 있습니다. 기본적인 구문은 아래와 같이 사용됩니다. projectName 필드 설정으로 가져올 빌드의 이름을 지정하여 파일을 복사하는 설정입니다. 다른 프로젝트 빌드에 저장되어 있는 Artifact를 복사하여 사용할 수도 있습니다.

 

copyArtifacts(
    projectName: 'pipeline-project-name'
    (optional)
)

 

여러 옵션을 사용하여 아래와 같이 사용할 수도 있습니다.

  • filter: 가져올 아티팩트를 필터링하는 방법을 지정합니다. glob 형식의 패턴을 사용할 수 있습니다. 예를 들어, */.jar는 모든 .jar 파일을 가져옵니다.
  • excludes: 가져오지 않을 아티팩트를 지정합니다. filter와 마찬가지로 glob 형식의 패턴을 사용할 수 있습니다.
  • fingerprintArtifacts: 가져온 아티팩트의 지문(fingerprint)을 생성합니다. 이 옵션을 true로 설정하면, Jenkins는 가져온 아티팩트의 지문을 계산하고, 이후 빌드에서 이 아티팩트가 사용될 때 지문을 검증합니다.
  • flatten: 가져온 아티팩트를 평면 구조로 저장합니다. 이 옵션을 true로 설정하면, 가져온 아티팩트가 현재 빌드의 루트 디렉토리에 직접 저장됩니다. 이 옵션을 false로 설정하면, 가져온 아티팩트가 원래의 디렉토리 구조를 유지합니다.
  • includeBuildNumberInTargetPath: 가져온 아티팩트를 저장할 때 빌드 번호를 포함시킵니다. 이 옵션을 true로 설정하면, 가져온 아티팩트가 현재 빌드의 루트 디렉토리 아래 buildNumber 디렉토리에 저장됩니다.
  • optional: 가져올 아티팩트가 없는 경우 처리 방법을 지정합니다. 이 옵션을 true로 설정하면, 가져올 아티팩트가 없는 경우 무시합니다. 이 옵션을 false로 설정하면, 가져올 아티팩트가 없는 경우 빌드가 실패합니다.
  • parameters: 가져올 빌드에 전달할 매개변수를 지정합니다. 이 옵션을 사용하면 가져올 빌드에서 정의된 매개변수를 사용할 수 있습니다.
  • resultVariableSuffix: 가져온 아티팩트의 변수 접미사를 지정합니다.
  • selector: 가져올 아티팩트를 선택하는 방법을 지정합니다

 

 

Artifact 테스트

archiveArtifacts{} 구문과 copyArtifacts{} 구문을 사용하여 테스트를 진행해봅시다. 우선 Golang 프로젝트의 패키지와 바이너리 파일을 저장하기 위해 vendor 디렉토리와 bin 디렉토리의 모든 파일을 저장하도록 설정하도록 하겠습니다.


'vendor/**, bin/**' 디렉토리를 지정하고 옵션을 통해 빌드가 성공했을 때만 Artifact를 저장하고, 생성된 Artifact가 없을 때에도 저장하고, fingerprint를 생성하여 Artifact를 구분할 수 있도록 설정하였습니다.

archiveArtifacts artifacts: 'vendor/**, bin/**', allowEmptyArchive: true, onlyIfSuccessful: true, fingerprint: true

 

 

이제 저장된 Artifact를 복사하여 사용하기 위해 아래와 같이 코드를 구성하였습니다.
pipeline-project-name 이름으로 저장된 빌드의 Artifact를 설정하고, 동일하게 'vendor/**, bin/**' 디렉토리를 지정하였습니다. 복사하는 Artifact는 build/ 디렉토리에 저장되도록 구성하였으며 복사할 Artifact가 없더라도 빌드가 실패하지 않도록 설정하였습니다.

copyArtifacts(
    projectName: 'pipeline-project-name',
    filter: 'vendor/**, bin/**',
    target: 'build/.',
    optional: true
)

 

 

테스트 코드 작성 후 빌드를 실행해보겠습니다.
빌드 완료 후 해당하는 빌드의 Workspace를 확인하면 아래와 같이 vendor 디렉토리와 bin 디렉토리의 파일을 확인하실 수 잇습니다.

 

 

Artifact 관리

Artifact를 계속 Jenkins에 저장할 수 없기 때문에 관리 정책을 추가할 수 있습니다. Jenkins 관리 웹 페이지에서는 pipeline -> Configuration -> General 설정에서 오래된 빌드 삭제 기능을 설정할 수 있습니다.

 

 

pipeline의 코드 상으로는 buildDiscarder를 사용하여 빌드를 자동으로 삭제하거나 유지하기위해 사용됩니다.

pipeline {
    options {
        buildDiscarder(logRotator(optional))
    }
}
  • numToKeepStr : 유지할 빌드의 수
  • artifactNumToKeepStr : 빌드 아티팩트(컴파일된 바이너리, 테스트 결과 등)의 유지할 개수
  • daysToKeepStr : 빌드 로그를 유지할 일수
  • artifactDaysToKeepStr : 빌드 아티팩트를 유지할 일수

 

예시)

buildDiscarder(logRotator(daysToKeepStr: '30'))
buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '5'))

 

 

 

지금까지 Jenkins 에서는 Artifact 플러그인 기능을 사용하여 생성된 Artifact를 저장, 복사, 관리하는 방법을 알아보았습니다...! 끝...!

 

 

[Reference]

+ Recent posts