본문 바로가기

취준

AI 직무테스트 준비

* 객관식/주관식 15문제 ...

 

뭐가 나올지 감이 안오지만 GPT 피셜 --

  • Python/자료구조: 4~5문제
  • 데이터/ML 개념: 5~6문제
  • 인프라/MLOps: 3~4문제
  • 기타(SQL/트러블슈팅): 1~2문제

Gemini 피셜 --

 

1. AI 인프라 및 플랫폼 (가장 유력)

JD에서 GPU 인프라 구축, Kubernetes(K8S), Docker를 명시하고 있습니다. 모델러보다는 '엔지니어'에 가까운 문제들이 나올 가능성이 높습니다.

  • 가상화 및 컨테이너: Docker Image와 Container의 차이, Dockerfile 작성 시 주요 명령어(RUN, CMD, ENTRYPOINT 등)의 용도를 물을 수 있습니다.
  • Kubernetes 기초: Pod, Service, Deployment 같은 기본 오브젝트의 개념이나, 왜 AI 플랫폼에서 K8S가 필요한지(스케줄링, 오토스케일링 등)에 대한 객관식 문제가 나올 수 있습니다.
  • GPU 인프라: NVIDIA Docker(NVIDIA Container Toolkit)의 역할이나 CUDA 버전 관리, GPU 모니터링 시 확인해야 할 지표(Util, Memory) 등에 대한 상식을 체크할 가능성이 큽니다.

2. MLOps 및 모델 서빙

"AI 모델 서빙 프로세스 이해"와 "MLOps 시스템 구성"이 업무 활동에 포함되어 있습니다.

  • 모델 서빙: REST API(Flask, FastAPI)의 기본 구조나, 추론(Inference) 속도 최적화를 위한 방법들(Batching, 양자화 등)에 대한 주관식 단답형이 예상됩니다.
  • MLOps 파이프라인: 모델의 버전 관리(Versioning), 데이터 드리프트(Data Drift)의 개념, CI/CD가 ML 환경에서는 어떻게 적용되는지에 대한 개념 문제가 나올 수 있습니다.
  • 저장소 및 툴: JD에 언급된 GitLab, MinIO 등이 어떤 용도로 쓰이는지(소스 제어, 오브젝트 스토리지) 파악해 두세요.

3. 프로그래밍 및 자료구조 (기초)

전형적인 CS 기초 역량입니다. 난이도는 높지 않겠지만 실수를 유도하는 문제가 나올 수 있습니다.

  • Python 실무: 리스트 컴프리헨션, 제너레이터, Decorator의 활용, 혹은 pandas/numpy를 이용한 간단한 데이터 핸들링 코드를 보여주고 실행 결과를 맞히는 문제.
  • 자료구조/알고리즘: 15문제 중 3~4문제는 스택, 큐, 해시 테이블의 특징이나 시간 복잡도(Big-O)를 묻는 객관식이 섞일 것입니다.
  • 트러블슈팅: 로그 분석 능력을 강조하고 있으므로, 에러 로그(예: Out of Memory, Connection Refused)를 보여주고 원인을 고르는 문제도 충분히 가능합니다.

-> 공통적으로 인프라/MLOps 도 예상하는데 이부분은 정말 모르는데...


 

MLOps

 

Silo Effect : 조직 내 부서나 팀들이 서로 고립되어 정보와 자원을 공유하지 않고 독립적으로 운영되는 상황

-> 문제 발생 (커뮤니케이션 부족, 중복 작업, 혁신 저해...) 

 

DevOps : Development + Operations - 개발과 운영의 합성어

SW 개발과 IT 운영을 통합

 

MLOps : ML + Operations - 머신러닝 개발과 운영 시스템 통합

* 개발 - 배포의 자동화 및 최적화

* CI (Continous Integraion) : 지속적 통합, 코드의 변경사항을 지속적 통합 

* CD (Continous Delivery) : 지속적 배포, 검증된 변경사항을 지속적 배포

* CT(Continuous Training): 새로운 데이터 유입 시 자동으로 재학습하는 MLOps만의 특징.

* 핵심 : (AI 모델 개발 - AI 모델 최적화 - AI 서비스 운영 + 데이터 파이프라인 관리 , 인프라 / 컴퓨팅 리소스 관리) 자동화

재현성 중요 (데이터/모델/코드 버전, 같은 결과 다시 만들 수 있어야함)

   * 버전 관리 중요 

 

DevOps와 MLOps 비교

* 모델 만들고 배포하는 단계가 추가됨 

* Data (모델 만들때, 실제 현실 데이터 (운영 단계))

 

ML 생애주기

0) 문제/데이터 정의, 가설 수립

1) 데이터 준비

  • 데이터 확보, 수집, 연계 
  • 데이터셋 공유 및 재사용
  • Data Drift : 모니터링 단계에서 사용
  • 데이터 탐색 / 가공
  • 데이터 레이블링
  • Feature Importance : 어떤 컬럼이 중요한지 

2) 실험/학습

  • 실험, 모델 학습/최적화/비교평가
  • 데이터 준비와도 밀접한 관계
  • 고려해야하는 질문들
    • 여러 모델 비교
    • 최근 3개 모델은 어떤 알고리즘/파라미터로 학습했는지
    • Feature 변경은 어떤 영향?
    • 지난번에 썼던 스크립트는 어느 버전이었고 상세 로그는?
  • 실험 추적관리
  • 자동화된 ML (Automated ML)
    • 여러 실험 입력 조건 조합들에 따른 학습 결과 예측
  • 모델의 검증 : 예측성능/처리성능

3) 모델 해석 

  • 중요한 이유: 모델이 복잡해질수록 설명이 안되기 때문에 정확도만으로 충분하지 않음
    ex) 개/ 늑대 구분 -> 정확도는 높았으나 어느 부분을 참고했는지 출력 결과 배경만을 참고
    • 모델 디버깅
    • 모델 공정성 판단
    • 사람과 AI의 협력
    • 규제 및 컴플라이언스
    • 리스크 영역

4) 배포/서빙

  • 모델 등록/패키지 정보 제공/추론로직 제공 -> Container Image 생성 -> 배포환경 지정 -> 배포/서빙
  • 모델의 모니터링 : 데이터 드리프트 (Data Drift)
    • 데이터의 패턴 특성이 시간이 지나며 변하는 현상
    • 학습에 활용된 당시의 데이터와 차이가 커질수록 예측 성능이 저하될 가능성
    • 따라서 Data Drift 여부를 지속적으로 모니터링하면 모델의 재학습 시점을 판단하는 방법이 될 수 있음
  • 모델 서빙 방식
    • Batch Inference : 한번에 처리 (ex: 하루 1번)
    • Real-time Inference : 요청 즉시 응답 (ex: 검색, 추천)

 

인프라

AI 인프라

  • GPU - 병렬 연산 가능으로 딥러닝 속도 향상
  • 클라우드 or 자체 구축해서 사용 
  • 학습 / 분석 / 추론 클러스터 필요 -> 단일화된 제품 나오고 있음

 

가상화 및 컨테이너

왼-VM / 오-컨테이너 (출처 : https://youtu.be/LXJhA3VWXFA?si=jx9uwhz7Ac7vf-Tz)

 

컨테이너 

= 서버의 한 종류 (소프트웨어 + 하드웨어)

  •  여러 소프트웨어를 한 서버에서 돌려야함
    -> 가상화기술로 한 서버를 여러 개로 쪼개서 각 소프트웨어를 돌림
  • 가상화기술 
    • 옛날에는 VM(Virtual Machine) 가상머신 사용  (운영체제를 포함)
    • Container - VM보다 가볍고 빠름

 

Docker

  • 컨테이너를 관리하기 위한 도구, 일종의 프로그램 (위 그림에서 Container engine)
  • 구성요소
    • Dokckerfile : 컨테이너 만들기 위한 설명서
      • Copy files
      • Install dependencies
      • Set environment Variables
    • Image :
      • 어플리케이션을 실행하는데 필요한 코드, 런타임환경, 시스템툴, 라이브러리 모든 세팅 포함 -> 이미지 (불변의 상태)
      • Dockerfile -> (Build) Image
    • Contatiner 
      • 이미지 활용해서 어플리케이션 구동 (RUN)
  • 배포 방법
    • Local Machine - Image -> (push) Container Registry -> (Pull) Image - Server
    • Container Registry 
      • Public : dockerhub, Github packages....
      • Private : AWS, Goggle Cloud, MSAzure

 

Kubernetes

  • 서버가 여러 대 있는 환경에서 각각의 서버의 도커에게 대신 지시해주는 오케스트레이션 도구
  • 컨테이너 오케스트레이션 도구
  • Docker Compose의 확장판
  • 장점
    • 컨테이너 관리 자동화
    • 부하 분산
    • 쉬운 스케일링 (서버 수 조절)
    • 셀프 힐링 (특정 프로그램이 죽으면 재시작)
  • 파드 (Pod)
    • 쿠버네티스에서 가장 작은 단위 (like 컨테이너  but 하나의 파드에 여러개의 컨테이너가 있을 수 있음)
    • 도커처럼 이미지를 기반으로 파드를 띄워 실행시킴

TODO :