23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요! DEVOCEAN YOUNG 2기 TEAM DEVSHIP의 정경륜입니다!
오늘은 저희 팀이 진행했던 프로젝트에 대해서 소개하려고 합니다.
저희 팀의 초기 프로젝트 목표는 데보션에 초개인화 추천시스템을 구축하는 것이었지만 중간에 몇 번의 피봇팅을 거친 후
최종적으론 지식그래프와 LLM을 활용하여 UAM 도메인에서 발생하는 문제를 해결하는 것으로 정해졌습니다.
이 과정에서 SKT의 김정석 멘토님의 많은 도움을 받아 프로젝트를 진행하였습니다.
문제를 설명하기 이전에 UAM이 무엇인지에 대해 설명하겠습니다.
UAM은 Urban Air Mobility의 약자로, 도시 상공을 이용하여 출발점에서 목적지까지 최단 거리로 이동하는 기체입니다.
UAM은 지상의 교통 혼잡을 피해 이동 시간의 비약적인 단축을 도모하며, 수직 이착륙이 가능하다는 특징을 가집니다.
이때 UAM의 시장 확보를 위한 가장 중요한 인프라 중 하나인 Vertiport는 UAM의 수직 이착륙 비행장을 의미합니다.
이에 따라 저희는 UAM의 Vertiport 간의 이동 상황에서 요구되는 교통관제 시스템을 구축하고자 하였습니다.
UAM은 다음과 같이 작동됩니다. UAM이 정착할 수 있는 vertiport가 있고 각 vertiport 여러 vertipad가 있습니다.
두 vertiport 간에 UAM이 운행을 할 때 정해진 경로를 따라서 가며 일방통행입니다.
이때 경로 중간에 거쳐가야 하는 길목으로 waypoint들이 있습니다.
UAM을 운행하다 보면 날씨 또는 새와 같은 비협력적 비행체로 인해 UAM 운행이 불가하거나 지연이 발생할 수 있습니다.
이때, 하나의 UAM의 지연은 모든 스케줄에 영향을 미치기 때문에 이를 관리할 수 있는 시스템이 필요합니다.
저희의 과제는 다음과 같습니다. 관제사와 UAM 간의 소통을 할 수 있는 시스템을 언어 모델을 통해 구축하는 것입니다.
좀 더 구체적으로 설명드리면 UAM rescheduling 등 중요한 결정은 관제사가 하기 때문에 관제사가 필요한 정보만을 현재 UAM 데이터에서 도출해 주는 언어 모델입니다.
관제사가 질문을 하면 챗봇과 같이 이에 대해 대답을 해줍니다.
UAM 데이터는 변수가 많고 매우 복잡하기 때문에 관제사가 데이터를 보고 판단하는 것은 비효율적이기도 하고
UAM 특성상 짧은 시간 안에 rescheduling을 해야 하기 때문에 해당 언어 모델을 통해 빠른 답변을 도출할 수 있도록 만들고 싶었습니다.
이때 LLM이 내린 판단의 근거는 지식그래프이기 때문에 책임 소재와 관련된 문제를 해결하는 데 도움이 됩니다.
앞서 말씀드린 대로 저희는 해당 문제를 해결하기 위해 지식그래프와 LLM을 사용하기로 하였습니다.
유저가 작성한 질문을 LLM이 이해하고 GraphDB에 날릴 적절한 query를 생성합니다.
해당 query로 GraphDB를 조회한 다음 그 결과를 바탕으로 앞서 요청한 질문에 대한 적절한 답변을 생성하여 반환합니다.
GraphDB에는 UAM 스케줄과 관련된 정보가 미리 들어있고 비협력적 개체 등으로 인한 스케줄에 변동사항이 생겼을 때
LLM이 GraphDB를 바탕으로 rescheduling을 할 수 있게끔 만드는 것이 최종 목표입니다.
여기에 지식그래프를 사용하는 이유엔 여러 가지가 있습니다.
일단 LLM이 지식그래프를 참조하도록 하여 explainability와 zero hallucination을 얻기 위함이 있습니다.
LLM이 학습하지 않은 data를 알게끔 하기 위함도 있습니다. 여기까지만 보면 VectorDB와 다를 바가 없지만
저희가 VectorDB 대신 지식그래프를 사용한 이유는 데이터 간의 복잡한 관계성을 그래프로 쉽게 살펴보기 위함입니다.
더불어 해당 도메인에 대한 온톨로지를 구축함으로써 knowledge base의 기반을 다져놓고 싶었습니다.
저희는 Stardog designer을 사용해 knowledge graph modeling을 시작하였습니다.
저희가 정의한 class는 총 6개이며, 각 class의 attribute은 다음과 같습니다.
모든 class에는 12:00부터 18:45까지의 모든 시간대를 담은 time attribute가 포함되어 있습니다.
먼저 UAM의 경우, 총 8개의 기체에 각각의 uam_id를 부여했습니다.
특정 UAM이 위치해있는 waypoint, vertiport, vertipad의 id 또한 개별적으로 명시해 주었습니다.
(이때 저희는 실시간 데이터가 아닌 스케줄 조회 차원의 계획된 시스템을 구성하는 것이므로, UAM이 각 waypoint를 지나거나 vertiport에 정착해있는 경우만을 포함시켰습니다)
다음 Vertiport는 뒤이어 제시될 2025년 UAM 상용화 대비 실증 노선 지도를 참고하여 고양 킨텍스, 김포 공항, 여의도 공원 헬기장으로 설정하였습니다.
그 외에도 해당 vertiport에 위치한 vertipad의 id와 해당 vertiport를 포함한 area의 id를 명시해 주었습니다.
Vertipad는 vertiport의 하위 개념으로, 실제 기체가 이착륙하는 위치를 나타낸다고 보시면 됩니다.
Vertipad는 UAM 스케줄에 맞춰 고양 킨텍스와 여의도에 3개, 김포공항에 총 4개로 설정하였습니다.
그 외에도 vertipad가 포함된 vertiport의 id와, 해당 vertipad에 위치해있는 UAM의 id 또한 포함하였습니다.
다음 Area의 경우, UAM 실증 노선 지도를 참고하여 vertiport와 waypoint가 속한 5개의 영역,
서울시 강서구, 서울시 마포구, 서울시 영등포구, 고양시 덕양구, 고양시 일산서구로 지정하였습니다.
또한 지역별 서로 다른 확률을 바탕으로 시간에 따른 availability를 지정해 주었습니다.
이때 availability란 해당 영역에서의 비행 가능 여부를 의미하며, 이는 날씨, 비협력적 개체의 존재 여부 등에 따라 결정됩니다.
Waypoint는 UAM 실증 노선 지도에 맞추어 총 5개로 설정하였습니다.
그 외에도 해당 waypoint가 속한 area의 id와, 해당 waypoint에 위치해있는 UAM의 id 또한 포함하였습니다.
Time class의 경우 12:00부터 18:45까지의 모든 시간대를 나열한 time attribute 하나로 구성하였습니다.
다음은 앞서 설명드린 class, attribute과 각 class 간의 관계를 바탕으로 모델링 한 지식 그래프입니다.
이는 데이터 생성 이후 해당 데이터를 매핑하여 구축한 최종 지식그래프 모델입니다.
저희는 가장 최근에 발표된 2025년 UAM 실증 노선을 참고하여 이 중 일부분인 한강 노선을 참고하여 데이터를 생성하였습니다.
Vertiport는 고양 킨텍스, 김포공항, 여의도로 설계했습니다.
Vertipad는 고양 킨텍스, 여의도에는 2개씩, 김포공항에는 4개가 있습니다. UAM은 총 8대가 운행합니다.
고양킨텍스과 김포공항, 그리고 김포공항과 여의도 사이를 지나는 노선 4개가 존재합니다.
이때 실증 노선에 표시된 바와 같이 고양 킨텍스와 김포공항 사이에는 waypoint가 2개, 김포공항과 여의도 사이에는 waypoint 3개가 있습니다.
각 Vertiport에서 모든 노선의 UAM은 20분 배차간격으로 운행됩니다.
저희는 LLM을 활용한 지식그래프 파이프라인을 만들기 위해서 LangChain 프레임워크를 활용하기로 했습니다.
LangChain에는 이미 GraphQA를 위한 모듈이 작성되어 있었기 때문에 직접 모든 agent를 만드는 것보단 빠른 개발이 가능할 것이라 생각했기 때문입니다.
LangChain을 활용한 GraphQA을 구축하기에 앞서 LangChain이 어떻게 구성되어 있는지 소스코드를 뜯어보았습니다.
GraphQA를 위한 GraphQA Chain 모듈이 있고 어떤 Graph를 활용하는지에 따라 다르게 정의된 Graph 모듈이 있습니다.
Graph 모듈은 GraphDB와 직접적으로 연결되는 부분입니다.
또한 GraphQA Chain 모듈은 SparQL을 생성하기 위해서 먼저 질문의 의도부터 파악합니다.
만약 질문의 의도가 단순 조회라면 select 문을 만들게 되고 그에 맞는 쿼리를 생성하게 됩니다.
이때 Graph의 schema 정보도 같이 들어가게 됩니다. 해당 graph의 schema와 질문의 intent, 그리고 질문을 모두 프롬프트에 넣어 LLM이 적절한 SparQL을 생성할 수 있도록 합니다.
다만 저희는 Stardog이라는 GraphDB solution을 사용하고 있었는데 아쉽게도 LangChain에는 Stardog에 관한 부분이 구현되어 있지 않았습니다.
그래서 LangChain에서 Stardog을 사용할 수 있도록 필요한 모듈을 직접 구현하였습니다.
다만 저희가 10월 한 달 동안 UAM 도메인을 스터디하고 graph modeling에 집중하느라 실제로 개발할 시간이 많이 부족했어서 몇몇 문제점들을 해결하진 못한 상황입니다.
문제점은 크게 2가지입니다.
첫 번째로 직접 만든 모듈이 생성한 쿼리가 Stardog에서 조회가 되지 않는 문제가 있습니다. 이 부분은 디버깅이 좀 더 필요한 부분입니다.
두 번째로 생각만큼 LangChain이 복잡한 쿼리를 생성하지 못한다는 점입니다. 이 부분은 프롬프트를 직접 수정하여 저희가 원하는 쿼리를 생성할 수 있도록 수정하고 실험할 필요가 있다고 판단했습니다.
최종 발표는 이미 끝이 났지만 저희가 원하는 결과는 아직 도출하지 못하였기에 앞서 말씀드렸던 문제점들을 해결해 보려고 합니다.
현재는 LangChain으로 구현을 시도했지만 다른 solution들도 있기에 시간이 되는 한 여러 solution들을 시도하고 비교해 보려고 합니다.
만족할 만한 결과를 얻게 되면 데보션에 공유하러 다시 찾아오겠습니다!!
처음으로 팀장을 맡아서 진행해 본 프로젝트였는데 부족한 팀장임에도 불구하고 잘 따라와 준 우리 팀원들에게 제일 먼저 고맙다는 말을 하고 싶습니다 :)
주제도 여러 번 바뀌고 최종 주제를 정한 것도 9월쯤이었기에 시간이 부족했지만 팀원들끼리 다 같이 고민하고 몰입했기에 결과를 낼 수 있었다고 생각합니다!!
저 멀리 호주에서도 열심히 참여해 줘서 넘 고마웠던 민정이, 스타트업에서 일하느라 바쁠 텐데 밤새 실험을 진행해 준 동재,
알게 모르게 뒤에서 서포트 많이 해줘서 고마웠던 현우, 우리 팀원들 모두 정말 고마워요😆
더불어 먼저 프로젝트를 제안해 주시고 지도해 주신 김정석 멘토님께도 정말 감사드린다는 말씀드리고 싶습니다!
정석 님의 조언 덕분에 지식그래프와 UAM에 대해서 좀 더 쉽게 다가갈 수 있었습니다!!!
UAM이라는 낯선 도메인을 이해하는 것부터 시작해서 지식그래프라는 낯선 학문을 파헤치는 것까지 데보션영 덕분에 새로운 도전을 할 수 있게 된 것 같습니다.
아직 만족할 만한 결과를 도출하진 못했지만 시간이 되는대로 더 개발해서 만족스러운 결과를 데보션에 공유하고 싶습니다!
올 한 해 데보션과 함께해서 행복했어요!!! 울 DEVSHIP 최고😖😖
처음에 주제를 정하는 것부터 여러 난관에 부딪혔었는데 팀원들과 여러 번 회의를 하면서 점점 방향성을 찾아가서 뿌듯했습니다.
그리고 운이 좋게도 끝나갈 때쯤에 과제를 제시해 주신 정석님 덕분에 새로운 분야에 대해서도 알게 되고 주제도 너무 흥미로웠습니다.
평소에 그래프에 관심이 있어서 공부해 보고 싶었는데 이 기회에 공부를 할 수 있어서 좋았습니다.
그리고 아직 부족하지만 끝이 보이지 않았던 결과를 낼 수 있어서 뿌듯했습니다. 같이 고생한 DEVSHIP 최고🥹🥹
프로젝트를 진행하는 과정에서 유능한 팀원들과 다양한 멘토 분들을 만날 수 있었던 점이 가장 인상적이었습니다.
초반 프로젝트 계획이 생각보다 난감했지만 팀원들과의 스터디, 윤주성 전문가님을 통해 새로운 지식과 인사이트를 많이 배울 수 있는 좋은 기회가 되었다고 생각합니다.
그 뒤 운 좋게 skt 덕분에 정석님과의 새로운 인연이 생겼고 한동안 잊고 있었던 제 전공과 직결된 산업에서의 문제점을 제안해 주셔서 즐거웠고
당장에는 와닿지 않을 수 있는 문제임에도 함께 공감하고 몰입해서 노력해 준 팀원들에게 고맙다는 말을 전합니다!!
여러 전공을 가진 팀원들로 이루어진 팀인 만큼 모두의 관심사를 반영할 수 있는 주제를 찾는 데 다소 어려움을 겪었습니다.
그러나 매주 다 같이 회의하고 의견을 나누며 결과적으로는 정말 다양한 분야를 아우르는 프로젝트를 진행할 수 있게 되었습니다 :)
이번 프로젝트를 계기로 UAM이라는 새로운 분야를 접하고, 저의 관심사를 확장할 수 있어 좋았습니다.
데이터 생성, 지식 그래프 모델링 등을 진행하는 과정에서 머리가 많이 아프기도 했지만..
그래도 함께 고민하여 나름의 결과를 도출할 수 있어 결과적으로는 매우 뿌듯하네요 !!
방향성을 잡지 못하던 저희 팀에게 한줄기 빛처럼 나타나주신 정석님, 그리고 함께 고생해 준 팀원들에게 정말 감사하다고 말하고 싶습니다 ㅎㅎ
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.