AI 엔지니어의 역할고 필요 역량
이번 페이지에서는 AI 엔지니어의 업무를 단계별로 소개하려 한다. 이전 글에서 AI 엔지니어의 정의를 설명해 두었으니, 아직 읽지 않았다면 먼저 확인해 보는 것을 추천한다.
AI 엔지니어는 프로젝트 시작 단계에서 실제 문제를 정의하고 요구 사항을 분석한다. 머신러닝 서적을 보면 머신러닝으로 문제를 해결하기 위해선 이 문제가 머신러닝으로 풀어갈 수 있는 문제인가를 먼저 판별하고, 가능하다면 머신러닝으로 문제를 해결할 수 있게 문제를 재정의하라고 한다. 이게 무슨 말일까?
✅ AI 엔지니어에게 주어지는 업무가 항상 구체적으로 제시되지는 않는다.
예를 들어, “강아지와 고양이를 분류하는 모델을 만들어 주세요"처럼 해결해야 할 문제가 이미 머신러닝 문제인 상태로 주어지는 것이 아니라는 뜻이다.
문제 정의는 “서비스 운영 과정에서 운영 리소스가 많이 드는데, 이를 줄일 수 있는 방법을 찾아주세요”, “유저가 해당 서비스에서 원하는 이미지를 편하게 찾기 위한 방법이 필요합니다” 와 같은 비즈니스 관점에서의 문제로부터 시작한다.
✅ 이러한 비즈니스 관점에서의 문제를 머신러닝 관점의 문제로 재정의하는 것부터가 AI 엔지니어의 업무이다.
이를 위해선 다양한 AI 기술과 실제 유즈 케이스들에 대해 파악하는 것이 중요하겠죠?
예를 들어, 중고 거래 서비스에서 “중고 거래되는 물품 데이터를 쌓아 분석해 보고 싶어요"라는 니즈에 “유저가 올린 중고 물품 이미지에 태그를 달아주는 이미지 분류 모델을 개발해서 거래되는 물품 데이터를 분석할 수 있을 것 같아요"라는 의견을 전달할 수 있는 것이다.
AI 기술 역량 : 다양한 AI 기술 및 유즈 케이스 및 최신 기술 동향 파악
비즈니스에 대한 이해 : 해당 비즈니스의 요구를 파악하고 분석할 수 있는 능력
문제 해결능력: 복잡한 문제를 이해하고 분석하는 능력
커뮤니케이션 능력: 기획자 또는 리더와 협력하여 요구 사항을 명확히 이해하고 전달할 수 있는 능력
이 단계에서는 문제 해결에 적합한 AI 기술을 리서치한다. AI 기술 리서치는 해결해야 할 문제를 효율적으로 해결할 수 있는 기술을 찾기 위해 논문을 분석하거나 유사한 유즈케이스를 연구하는 과정이다. 따라서 AI 엔지니어는 AI 관련 논문을 읽고 이를 이해하여 실제 문제에 적용할 수 있는 능력이 필요하다.
구체적으로는 다양한 딥러닝 모델 중 문제 해결에 적합한 모델을 선택하고, 추가적으로 필요한 기술을 조사하며, 이를 기반으로 초기 실험을 과정이다. 이 과정에서 최신 연구 동향을 빠르게 파악하고 적용하는 것이 매우 중요하다.
최근에는 파운데이션 모델이나 LLM과 같은 대형 모델의 활용도 많아졌다. 필요한 경우, 프롬프트 엔지니어링이나 fine-tuning을 통해 문제에 맞게 모델을 커스터마이즈 하거나, RAG를 사용한 검색 기반 접근 방식을 고려할 수도 있다.
머신러닝/딥러닝 및 도메인 지식: 다양한 AI 알고리즘과 딥러닝 모델에 대한 깊은 이해
논문 서치 및 이해 능력: 머신러닝, 통계학, 선형대수 등 기초 학문에 기반한 논문 분석 능력
프로그래밍 능력: Python, R 등의 언어로 모델을 구현하고 실험할 수 있는 능력
최신 기술 트렌드 파악: 새로운 연구와 기술 트렌드를 빠르게 학습하고 적용하는 능력
이 단계에서는 AI 모델을 개발하기 위해 필요한 데이터를 수집하고 처리한다. 기술 리서치 단계에서 이미 필요한 데이터의 유형과 양을 파악했으므로, 이에 맞는 데이터셋을 구축하는 과정이 포함된다. 데이터는 모델의 학습 및 성능에 핵심적인 역할을 하며, 특히 데이터의 품질이 모델 성능을 결정짓는 중요한 요소이기 때문에 매우 중요한 단계이다.
일부 기업 환경에서는 이미 사전 구축된 데이터가 준비되어 있는 경우도 있다. 하지만 이런 경우에도 데이터를 검증하고 정제하는 과정이 여전히 필요하다. 예를 들어, 불완전한 데이터나 이상치(outliers)를 제거하고, 필요한 경우 추가적인 레이블링 작업을 수행해야 한다.
사실 이 단계는 [4. 모델 학습 및 평가 단계]와 병렬적으로 진행되는 단계이다. 데이터가 전부 수집되거나 레이블링 될 때까지 기다리는 것이 아니라, 중간중간 수집된 일부 데이터로 모델을 학습 및 평가해야 하기 때문이다.
최근에는 LLM을 위한 대규모 데이터셋을 구축할 때, 크롤링이나 외부 데이터 API를 활용하여 다양한 텍스트 데이터 소스를 수집하는 경우가 많으며, RAG와 같은 기술을 통해 외부 데이터베이스에서 필요한 정보를 실시간으로 불러오는 방식도 고려된다.
데이터 분석 및 처리 능력: 다양한 데이터 소스에서 데이터를 추출하고 처리할 수 있는 능력
데이터 관리 능력: 대용량 데이터를 효율적으로 관리하고 저장하는 기술 필요
대규모 데이터 처리 기술: 대규모 데이터셋을 효과적으로 처리하기 위한 기술 (예: Apache Spark, Hadoop)
SQL 및 데이터베이스 기술: 관계형 데이터베이스나 NoSQL 데이터 베이스에서 데이터를 추출하고 변환할 수 있는 능력
데이터 시각화 : 데이터 분포나 패턴을 파악하기 위해 시각화를 통해 데이터를 분석하는 능력
학습 데이터를 구축한 후에는 AI 모델을 학습시키고 다양한 상황에서 정량적 및 정성적으로 평가하는 과정을 거친다. 이 과정에서 초기 결과를 바탕으로 추가적인 학습 데이터가 필요한지를 판단해야 한다. 정량적 평가뿐만 아니라 다양한 시나리오를 통해 모델 성능이 어떤 경우에 떨어지는지를 분석해야 한다.
✅ LLM 모델을 개발한다면?
최근에는 LLM 개발 시 일반적으로 파운데이션 모델을 많이 사용한다. 간단한 기능을 위해서는 프롬프트 엔지니어링, RAG (Retrieval-Augmented Generation) 정도만 활용하는 경우도 많다. 또는 파인튜닝(fine-tuning)을 통해 모델을 특정 목적에 맞게 최적화하기도 한다. 이와 함께 클라우드 기반 모델을 사용할지, 오픈소스 모델을 사용할지 등 요구 사항에 따라 적절한 선택이 필요하다.
이처럼 LLM 개발은 기존 딥러닝 모델과의 개발 사이클이 다를 수 있는 점을 인지하자.
머신러닝 및 딥러닝 이해: 다양한 알고리즘과 모델을 이해하고 적용할 수 있는 기술이 필요
프로그래밍 능력: Python과 같은 프로그래밍 언어를 사용하여 모델을 구현하고 테스트할 수 있는 능력
딥러닝 프레임워크 사용 역량 : Pytorch, Tensorflow, Huggingface,...
모델 평가 및 최적화: 모델의 성능을 평가하고 필요한 경우 하이퍼파라미터를 조정하여 최적화하는 기술
모델을 학습하고 평가한 후, 프로젝트에서 요구하는 성능을 달성하기 위해 모델을 고도화하는 과정이 필요하다. 이 과정에서는 아래와 같은 다양한 방법을 고려해 볼 수 있다.
더 많은 양질의 학습 데이터를 추가 수집하여 모델 학습
문제 해결에 적합한 새로운 학습 방법 시도
모델 구조를 개선
전처리 및 후처리 기능을 개발
때로는 모델을 학습하는 것보다 기술 고도화를 위한 전후처리 기능 개발이 더 많은 시간이 걸릴 수도 있다.
예를 들어, 컴퓨터 비전이나 자연어 처리 분야에서는 딥러닝뿐만 아니라 머신러닝이나 전통적인 알고리즘이 전후처리 과정에서 자주 활용된다. 이처럼 다양한 방법론을 적절히 결합하여 문제를 해결하는 것이 중요하며, 이러한 경험이 프로젝트의 성공에 중요한 요소가 될 수 있다.
모델 학습이 완료되면, 인퍼런스 최적화를 통해 모델을 경량화하고 성능을 개선하는 과정도 필요하다. 모델이 더 빠르고 경량화될수록 비용 효율적이기 때문이다. 특히 엣지 디바이스에 AI 모델을 탑재할 때는 모델 경량화가 필수적으로 요구된다. 대다수의 AI 모델이 GPU 서버에서 동작하기 때문에, 인퍼런스 속도를 최적화하는 것은 실무에서 매우 중요한 과제이다.
도메인 지식 및 문제 해결 능력: Computer Vision, Natural Language Processing, Robotics 등 다양한 분야에서의 문제 해결 능력
딥러닝 프레임워크 활용 능력: Pytorch, TensorFlow, Hugging Face 등 딥러닝 프레임워크를 자유자재로 다룰 수 있는 능력
딥러닝 모델 경량화 및 인퍼런스 최적화 기술: 모델의 성능을 유지하면서도 경량화 및 인퍼런스 속도를 최적화할 수 있는 능력 (예: TensorRT, ONNX)
마지막 단계에서는 개발한 AI 모델을 실제 환경에 배포하고, 운영하며 유지보수하는 과정을 거친다. 이 과정에서 운영 중 발생할 수 있는 다양한 문제를 해결하고, 모델의 성능을 지속적으로 모니터링하여 개선하는 것이 핵심이다. 또한, 모델이 환경 변화나 새로운 데이터에 맞춰 계속해서 최적의 성능을 발휘할 수 있도록 주기적인 업데이트와 관리가 필요하다.
특히 실시간 모니터링 및 알림 시스템을 통해 예기치 못한 문제를 신속히 파악하고 대응하는 것이 중요하다. 운영 환경에서 모델이 의도한 대로 작동하지 않거나 예기치 못한 결과를 초래할 수 있는 상황에 빠르게 대처하는 것도 엔지니어의 중요한 역할이다.
시스템 통합 능력: AI 모델을 실제 시스템에 통합하고 배포할 수 있는 능력
문제 해결 능력: 모델 운영 중 발생하는 다양한 문제를 신속하게 분석하고 해결할 수 있는 능력
지속적인 학습과 개선: AI 기술의 빠른 발전에 맞춰 지속적으로 학습하고 모델을 개선할 수 있는 능력
이로써 AI 엔지니어가 수행하는 업무를 단계별로 살펴보았다. 이와 같은 단계별 역할을 효과적으로 수행하기 위해서는 기술적 지식뿐만 아니라 문제 해결능력과 커뮤니케이션 능력 또한 중요하다.
또한 설명한 여러 단계의 업무를 유동적으로 수행하는 직무도 있고, 일부 과정을 전문적으로 수행하는 직무도 있으니 AI 엔지니어가 되고 싶다면 어떤 기술에 초점을 맞추고 싶은지도 고민해 봐야 한다.