[13편] AI 모델 파이프라인과 MLOps를 위한 스크립팅 언어 (Bash & SQL)

 앞선 12편에서는 텍스트 데이터를 토크나이저로 쪼개고 허깅페이스 생태계를 활용해 거대 언어 모델(LLM)을 다루는 핵심 스택을 살펴보았습니다. 파이썬과 PyTorch를 이용해 훌륭한 AI 모델을 코딩하고 학습시키는 것은 개발자의 핵심 역량이지만, 실무 현장에서는 모델을 책상 위에서 혼자 돌리는 것으로 끝나지 않습니다.

학습이 끝난 모델을 주기적으로 자동 실행하고, 대용량 데이터를 데이터베이스에서 안전하게 추출해 오며, 서버 환경에서 여러 스크립트를 유기적으로 엮어내는 엔지니어링 능력이 필수적입니다. 이때 파이썬 외에도 리눅스 환경을 조율하는 Bash 스크립트와 데이터의 고향인 데이터베이스를 다루는 SQL은 AI 엔지니어가 반드시 다룰 줄 알아야 하는 숨은 주역입니다.

나 역시 처음 모델 배포 자동화를 맡았을 때, 파이썬 파일 하나만 믿고 수동으로 서버에 접속해 일일이 명령어를 입력하다가 새벽에 서버가 뻗어버리는 아찔한 경험을 했습니다. 그제야 왜 선배 개발자들이 자동화 스크립트와 데이터 쿼리를 강조했는지 깨달았죠. 오늘 13편에서는 AI 파이프라인의 안정성을 지탱하는 Bash와 SQL의 실무 활용법을 짚어봅니다.

1. 리눅스 서버를 지배하는 자동화의 손발: Bash 스크립트

대부분의 AI 학습 서버나 클라우드 환경(AWS, GCP 등)은 그래픽 유저 인터페이스(GUI)가 없는 검은 화면의 리눅스(Linux) 운영체제로 구동됩니다. 서버 위에서 일련의 작업들을 순서대로 자동 실행하려면 Bash 스크립트(.sh) 작성이 필수적입니다.

(1) AI 파이프라인에서 Bash가 쓰이는 순간

  • 데이터 자동 다운로드 및 압축 해제: 수십 기가바이트에 달하는 대용량 데이터셋을 외부 서버에서 받아와 자동으로 압축을 풀고 정해진 폴더에 배치하는 작업

  • 학습 스크립트 순차 실행: 전처리 파이썬 파일 실행 후 곧바로 학습(Train) 스크립트를 호출하고, 학습이 완료되면 평가(Evaluate) 스크립트로 이어지도록 일괄 처리하는 자동화 셸(Shell) 구성

  • 로그 및 백업 관리: 학습 과정에서 생성되는 무거운 가중치 파일들을 정해진 주기에 따라 백업하고 오래된 로그 파일을 정리하는 반복 작업

(2) 실무에서 자주 쓰는 기초 셸 명령어 패턴

복잡한 프로그래밍 언어가 아니더라도, 파이프라인 스크립트 안에는 다음과 같은 핵심 제어문이 조화롭게 녹아 있어야 합니다.

Bash
#!/bin/bash
echo "==> AI 데이터 전처리 작업을 시작합니다."
python preprocess.py --input_dir ./raw_data

if [ $? -eq 0 ]; then
    echo "==> 전처리 완료. 모델 학습을 백그라운드에서 실행합니다."
    nohup python train.py --epochs 10 > train.log 2>&1 &
else
    echo "==> 에러 발생: 전처리 단계에서 문제가 생겨 학습을 중단합니다."
    exit 1
fi

2. 데이터의 혈관을 뚫는 언어: SQL (Structured Query Language)

아무리 뛰어난 AI 모델 알고리즘을 가져와도, 모델에 공급할 '데이터'가 부실하거나 제때 공급되지 않으면 아무 소용이 없습니다. 기업의 수많은 유저 행동 로그, 결제 내역, 상품 정보 등은 모두 관계형 데이터베이스(RDB)에 안전하게 보관되어 있습니다.

(1) MLOps 환경에서 SQL의 역할

  • 학습용 데이터셋 추출 (Feature Extraction): 데이터베이스에 쌓인 거대한 테이블에서 머신러닝 모델의 입력 변수(Feature)로 쓸 만한 유의미한 컬럼들만 골라 정제된 형태로 추출합니다.

  • 데이터 품질 검증: 결측치가 급증하거나 비정상적인 이상 데이터가 유입되었는지 데이터베이스 레벨에서 사전에 모니터링하고 쿼리로 검증합니다.

(2) AI 엔지니어가 알아야 할 핵심 쿼리 감각

데이터 분석가만큼 복잡한 조인(Join) 문법을 다 쓰지 못하더라도, 대용량 테이블에서 특정 기간의 데이터를 효율적으로 인덱싱하고 그룹화하여 파이썬 판다스로 가져오는 기본 쿼리 작성 능력은 필수적입니다. 불필요하게 전체 테이블을 다 읽어오지 않고 필요한 데이터만 필터링해 오는 쿼리 습관이 서버 과부하를 막아줍니다.

3. MLOps 파이프라인 전체 흐름 이해하기

Bash와 SQL, 그리고 파이썬이 현장에서 어떻게 맞물려 돌아가는지 전체적인 파이프라인 흐름을 그려보면 다음과 같습니다.

  1. [데이터 수집 - SQL]: 데이터베이스에 쌓인 원천 데이터를 SQL 쿼리로 주기적으로 추출하여 CSV 또는 Parquet 파일로 저장합니다.

  2. [전처리 및 학습 자동화 - Bash & Python]: Bash 스크립트가 정해진 시간(Cron job 등)에 작동하여 파이썬 전처리 모듈을 부르고, 이어 PyTorch 학습 모델을 구동합니다.

  3. [모델 배포 및 모니터링]: 학습이 끝난 모델 가중치는 서버 저장소로 안전하게 이동하고, 서비스 서버에 자동으로 반영되어 실시간 추론을 대기합니다.

4. 스크립팅 언어 활용 시 자주 범하는 실수 2가지

  • Bash 스크립트 내 절대 경로 누락:

    직접 터미널에서 실행할 때는 잘 되던 파이썬 파일이, 자동화 셸 스크립트에 묶여 크론탭(Crontab) 등으로 실행될 때는 작업 디렉터리(Working Directory) 경로가 달라져 파일을 찾지 못하는 에러를 자주 겪습니다. 스크립트 내 모든 파일 경로는 명확한 절대 경로로 지정하는 것이 안전합니다.

  • 데이터베이스 커넥션 종료 누락:

    SQL을 이용해 대용량 데이터를 파이썬으로 가져올 때, 커넥션(Connection)을 열어두고 닫지 않거나 대량의 데이터를 한 번에 메모리에 올리려다 데이터베이스 서버의 메모리를 고갈시키는 실수를 조심해야 합니다. 배치(Batch) 단위로 나누어 조회하는 지혜가 필요합니다.

핵심 요약

  • Bash 스크립트는 리눅스 서버 환경에서 데이터 전처리, 모델 학습, 로그 백업 등의 과정을 순차적이고 안정적으로 자동화하는 도구입니다.

  • SQL은 데이터베이스에 쌓인 방대한 정보 속에서 모델 학습에 필요한 알짜배기 데이터셋을 효율적으로 추출하는 통로입니다.

  • AI 개발은 단일 모델 코딩에만 국한되지 않으며, Bash와 SQL을 아우르는 전체 파이프라인 자동화(MLOps) 역량이 실무 경쟁력을 결정합니다.

댓글

이 블로그의 인기 게시물

[3편] 파이썬 환경 구축에서 90%가 겪는 시행착오 (Anaconda vs venv vs Docker)

[5편] 데이터 시각화로 AI 데이터 통찰 얻기 (Matplotlib & Seaborn)

[파이썬python]API 활용하기 - 공공데이터와 연동하여 정보 가져오기