뉴스99 | 링크드인의 GenAI 서비스 개발 과정
매일 개발자들의 핫 토픽 아티클을 요약/번역해 업로드 해드립니다. | 뉴스99
링크드인의 GenAI
애플리케이션 기술 스택 개발 과정
요약: https://news.hada.io/topic?id=18078
2023년 초, LinkedIn은 GenAI 기능을 활용하는 제품 포트폴리오를 출시하기 시작함
초기 GenAI 제품은 간단한 "프롬프트 입력, 문자열 출력"에서 시작하여 컨텍스트 메모리를 지원하는 대화형 에이전트 경험으로 발전
GenAI 애플리케이션 기술 스택 구축을 통해 타임투마켓 과 장기 레버리지 간의 균형을 유지하는 접근 방식을 구현
Genesis and Evolution
공통 작업을 위한 표준 메커니즘을 제공하는 프레임워크 구축이 필요했음
대부분의 LinkedIn 온라인 서빙 스택이 Java로 프로그래밍되어 있어 초기에는 공유 Java midtier로 시작함
사용 사례가 증가함에 따라 이 midtier가 개발 및 운영 병목 현상이 되어 여러 사용 사례별 Java midtier 서비스로 분할함
AI 엔지니어는 오프라인 LLM 기반 워크플로, 프롬프트 엔지니어링 및 평가에 Python을 선호함
단기적으로는 단편화된 온라인 및 오프라인 스택을 유지하되, 장기적으로는 Python을 온라인 서빙에도 사용하기로 결정함
LangChain 오픈소스 프로젝트를 기반으로 온라인 서빙용 Python 프레임워크 구축
Python에 중점을 두고 핵심 인프라 종속성에 대한 Python 지원 활성화 프로젝트 시작
현재 GenAI 애플리케이션 프레임워크는 LangChain 위에 구축된 얇은 래퍼임
프롬프트 관리
프롬프트 엔지니어링은 LLM을 "프로그래밍"하는 주요 메커니즘임
초기에는 코드에서 수동 문자열 보간을 사용했지만 오류가 발생하기 쉽고 확장이 불가능했음
Prompt Source of Truth 컴포넌트 도입하고 Jinja 템플릿 언어 사용 표준화
프롬프트 해상도 라이브러리를 Java에서 Python으로 다시 작성
대화형 UI가 등장함에 따라 대화에서 인간과 AI의 역할에 대한 더 많은 구조 제공
최종적으로 OpenAI Chat Completions API로 수렴
스킬을 통한 작업 자동화
스킬 추상화를 GenAI 애플리케이션으로 확장하여 작업 자동화 메커니즘으로 사용
초기에는 LLM 친화적인 JSON 스키마를 사용하여 LinkedIn 내부 및 외부 API를 래핑하는 사용자 지정 코드로 구축됨
스킬 중복 구현, 다운스트림 스킬 변경, 개발자의 수동 스킬 지정 등의 문제 발생
Skill Inversion 개념 도입하여 다운스트림이 스킬을 정의하고 호출 앱에 노출하도록 함
중앙 집중식 스킬 레지스트리 서비스, 빌드 플러그인, 동적 LangChain 도구 등 스킬 액세스, 개발 및 운영 프로세스 간소화
점진적으로 모든 API에 대한 스킬 추상화를 생성하여 LLM이 원활하게 상호작용할 수 있도록 기술 스택 진화 중
컨텍스트 인식 및 개인화
LLM이 기본적으로 stateless하기 때문에 컨텍스트 인식과 개인화가 어려움
초기에는 Couchbase나 Espresso DB를 스토리지로 사용하고 각 팀이 DB 설정, 쓰기/읽기 등을 담당함
LLM 컨텍스트 윈도우가 제한적이므로 의미 검색(임베딩 사용)과 요약 기능이 필요해짐
LinkedIn 메시징 스택을 활용하여 대화 메모리 인프라 구축
사용자-애플리케이션 상호 작용 경험을 기반으로 파생된 Experiential Memory 개념 도입
GenAI 애플리케이션 프레임워크에 통합하여 개발자가 원활하게 사용할 수 있도록 지원
모델 추론 및 미세 조정
초기에는 Azure OpenAI 서비스에서 제공하는 LLM만 사용함
LinkedIn 특정 작업을 위해 미세 조정된 Llama와 같은 LLM이 상용 모델과 비슷하거나 더 나은 품질을 보임
외부 및 내부 모델에서 애플리케이션 개발자 경험을 투명하게 하기 위해 노력 중
추론 계층은 모든 LLM에 OpenAI Chat Completions API를 노출함
애플리케이션 프레임워크의 구성 훅을 통해 온프레미스 및 외부 모델 간 쉽게 전환 가능
마이그레이션
레거시 맞춤형 솔루션에서 표준화된 솔루션으로 신속하게 마이그레이션하는 것이 중요함
Java 스택과 새로운 스택에 대한 깊은 지식을 가진 엔지니어로 구성된 린 팀이 마이그레이션을 처리함
점진적 접근 방식을 사용하여 개별 구성 요소를 하나씩 마이그레이션함
간단하고 작은 앱부터 시작하여 복잡하고 큰 앱으로 진행
선배 엔지니어와 신입 Python 개발자를 페어링하여 실무에서 Python을 배울 수 있도록 함
최종 생각
새로운 GenAI 애플리케이션 기술 스택은 AI 우선 개발을 수용하고 효율적이고 책임감 있게 GenAI 앱을 구축하기 위한 탄탄한 기반을 마련함
전 세계 인력의 모든 구성원에게 경제적 기회를 제공하려는 비전 달성에 중요한 역할을 할 것임
아직 해결해야 할 과제가 많이 남아 있음
제품 경험의 최첨단이 대화형 어시스턴트에서 AI 에이전트로 이동함에 따라 새로운 기능 및 운영 요구 사항이 급증하고 있음. 이 내용도 추가로 공개 예정

ai도입을 많이하는 추세이긴 하네요~! 좋은 글 감사합니다!

대제목 행간이 너무 좁은 것 같아요 ..! @항해99
마크다운 스타일을 아직 손보지 못해 가독성이 떨어지네요. ㅠㅠ 일단 띄어쓰기로 임시조치 해 두었습니다..ㅎㅎ