본문 바로가기
AI 학교, AI 환경

AI로 문제를 해결하기

by 격암(강국진) 2024. 11. 23.

30년전과 비교하면 확실히 AI를 개발하는 환경은 크게 달라졌다. 이런 걸 생각할 때 사람들이 생각하는 것보다는 훨씬 빨리 별로 멀지 않은 미래에 AI를 만드는 일은 상당히 쉽고 보편적이 될 것이다. 예를 들어 구글의 teachable machines 서비스를 보자. 아래의 그림은 개와 고양이의 사진들을 써서 사진속의 동물이 개인지 고양이인지를 분류하는 AI를 만드는 것을 보여준다. AI를 만들기 위해서 사람들이 해야 하는 일은 그냥 두 종류의 사진 데이터들을 업로드해주는 것뿐이다. 그렇게 데이터를 주면 구글의 서비스는 그걸 기반으로 분류를 해내는 AI를 만들어 주는 것이다. 이런 것을 AutoML 서비스라고 부르는데 그림에서 보여주는 것은 초보적인 것이지만 기업수준에서 쓸 수 있는 AI를 만들어 주는 서비스도 존재하고 확대되고 있다. 구글의 autoML이 그렇고 마이크로 소프트의 azure autoML이 그렇다. 

 

 

일반적으로 말해서 AI로 문제를 해결하는 일은 먼저 AI가 만들어 질 문제를 정의하는 일에서 시작된다. 그리고 이 과정에서 문제의 목적과 데이터의 형식따위가 결정된다. 예를 들어 바둑게임을 이기는 것이 목적이라면 문제를 풀 시스템은 바둑판이고 데이터는 바둑판위의 바둑돌의 위치들일 것이다. 그리고 문제의 목적은 게임을 이기는 것이다. 개와 고양이를 분류하는 문제의 목적은 분류이고 데이터는 개와 고양이의 사진들이다. 이렇게 해서 AI를 만들 문제가 구체적으로 만들어 지면 우리는 데이터를 모으고, 그 데이터에 적합한 학습모델을 선정한 후 컴퓨터 최적화 방식으로 그 학습모델을 학습시켜서 적절한 변수값을 알아낸다. 그렇게 찾아낸 변수값이 바로 AI의 핵심이다. 그렇게 AI가 만들어지면 문제가 해결되게 되는 것이다.

 

그런데 여기에서 후반부에 말한 세가지의 일들 즉 데이터를 수집하고, 적절한 학습모델을 선정하며, 컴퓨터 최적화로 AI를 만들어 내는 과정은 점점 더 쉬워지고 있고 앞으로는 더더욱 자동화될 것이다. 그걸 잘 보여주는 예 중의 하나가 바로 위에서 보여준 teachable Machine 서비스이다. 간단히 말하면 AutoML 서비스를 쓰면 내가 무슨 문제를 풀 것인지만 알면 AI가 저절로 만들어 진다. 컴퓨터 언어 따위를 하나도 몰라도 된다.  물론 현재로서는 좋은 AI를 만들자면 한계가 있다.  먼저 위에서 보여지듯 데이터를 내가 가지고 있어야 한다. 즉 데이터 수집은 나의 몫이다. 게다가 아직은 학습 모델을 서비스 해주는 쪽에서 자동으로 선택하는 기능이 그다지 좋지 못하다. 이런 학습 모델의 세부적 변경을 하이퍼 패러미터의 변경이라고들 하는데  실제 응용을 만드는데 있어서는 대개 경험자가 하이퍼 패러미터의 변경을 하는 것이 바람직 하다. 그리고 컴퓨팅 파워도 그렇다. AI는 강력한 컴퓨팅 파워가 필요하며 지금은 아주 간단한 AI가 아니면 집에 있는 PC에서 만들 수 없다. 유명한 챗팅 AI들은 수백기가의 메모리가 필요하므로 학습은 커녕 그냥 사용만 하는 것도 집에 있는 PC에서 할 수 없으며 실제 응용에 쓰이는 훨씬 작은 AI들도 엔비디아의 GPU같은 것을 써도 대개 한달 이상의 개발기간이 필요하다. 한번 훈련해 보는데 몇일이나 걸리는게 보통이고 그 다음에는 그걸 여러번 해봐야 하기 때문이다. 그래서 지금은 전세계가 엔비디아의 H100같은 GPU를 사들이느라고 바쁘다. A100같은 이전의 GPU에 비하면 몇분의 일로 걸리는 시간이 줄어들기 때문이다. 강력한 컴퓨팅 파워가 없으면 AI는 만들 수 없다. 

 

하지만 이런 컴퓨팅 파워를 늘리는 일은 지금도 맹렬히 이뤄지고 있고 사람들이 전부 챗GPT같은 거대 AI를 만들어야 하는 것도 아니다. 사실은 허깅페이스같은 사이트에 가면 이미 많은 크고 작은 AI들을 무료로 나눠주고 있다. 이 AI들은 사전 학습이 끝난 상태이다. 그러니까 이미 상당한 데이터를 써서 학습이 이뤄진 AI들을 거기서 가져다가 내가 원하는 문제를 더 잘 풀수 있도록 훈련을 더 시키는 일 즉 파인튜님을 하는 것으로 AI를 만들 수 있다. 이런 AI들도 걸핏하면 몇십억개의 패러미터를 가진 거대한 AI다. 이런 걸 생각하면 AI를 만드는 일은 수만줄의 컴퓨터 코딩이 필요할 것같지만 그렇지 않다. 이미 GPU를 제어하는 cuda나 AI를 훈련시키는 Pytorch, tensorflow같은 라이브러리가 보급되어져 있고 지금의 AI도 코딩을 잘한다. 그래서 실질적으로는 배워야 할 것도 있고 조심도 해야 하지만 조금 과장하자면 챗GPT나 클로드 같은 AI에게 파이선으로 이런 저런 AI를 만드는 코드를 짜달라고 하면 저절로 코드를 짜서 AI를 만들 수 있다. 컴퓨터 코딩 하나 없이 현실적인 문제를 푸는 AI를 만드는 일은 이미 코앞의 현실인 것이다.

 

이걸 진짜 현실로 하고 싶다면 몇가지 사회적 환경조성이 필요하다. 첫째로 현실적인 문제를 AI로 푸는 사례들을 수집해서 사람들에게 참고하게 하는 것이다. 이것은 이미 Kaggle, paperswithcode같은 사이트에서 하고 있는 일이며 한국에도 AIhub라는 사이트가 있다. 여기 가면 여러가지 문제를 어떤 모델을 써서 어떻게 풀었는지를 알 수 있다. 데이터도 다운 받을 수 있다. 둘째로 중요한 것은 앞에서 말한 데이터다. 사람들은 개인적으로 가진 데이터를 첨부해서 AI를 파인튜닝 하겠지만 그 보다 더 많은 데이터들이 필요할 것이기 때문에 데이터를 쉽게 찾고 다운 받을 수 있는 서비스가 필요하다. 그래서 데이터를 개방하고 수집하고 배포해주는 사회적인 서비스가 필요하다. 세째는 autoML 같은 서비스가 발전하는 것이다. 그러면 사람들은 자기 문제를 푸는 AI를 직접 만들 수 있다. 그리고 마지막은 컴퓨팅 파워가 준비되는 것이다. 사회적으로 컴퓨팅 파워를 공급할 인프라가 있어야 AI는 자유롭게 만들어 질 수 있다. 

 

정리하자면 집에 수돗물이 나오고 전기가 들어오듯 미래 AI 사회에서는 컴퓨팅 파워와 데이터와 AI 모델에 대한 정보가 물처럼 공급될 필요가 있다. 그리고 그러한 일은 이미 일어나고 있다. 그렇게 되고 나면 AI로 문제를 푸는 일의 핵심은 바로 문제를 구성하는 일이 된다. 즉 우리는 도대체 무슨 문제를 풀고 싶은가를 정하는 것이다. 문제를 발견하고 그것을 AI가 잘 풀 수 있는 형태로 구성하는 것이 문제 해결의 핵심적 부분이 된다. 이것도 어느 정도는 AI가 도움을 줄 수 있겠지만 이 일은 기본적으로 인간의 일이다. 왜냐면 어떤 것에서 문제점을 느끼는가 하는 것은 인간의 가치판단의 문제이기 때문이다. 마라토너를 생각해 보자. 마라토너는 마라톤 코스를 제일 빨리 뛰고 싶을 것이다. 그런데 사실 기계 입장에서 보면 이건 애초에 엉터리 문제다. 왜 뛰나? 그냥 자동차를 타고 가면 되는 걸. 그럼에도 불구하고 인간은 어떤 문제의 형식을 가지고 문제를 가진다. 사람들과 즐거운 시간을 가지고 싶은 것은 인간의 욕망이다. 그런데 기계가 즐거운 시간이라는 개념을 이해할 수 있을까? 결국 인간이 자신이 풀고 싶은 것을 구체화해서 나는 이런 상황에서 이런 것을 달성하고 싶다고 문제를 구체적으로 구성해야 한다. 그리고 나면 이제 앞에서 말한 온갖 기술들이 등장해서 그 문제를 풀기 위한 최적화를 할 수 있는 것이다. 문제를 어떻게 구성하냐에 따라 그 해답은 간단히 해결될 수도 있고 엄청난 자원을 소모해도 그다지 잘 안풀릴 수도 있다. 그래서 문제의 구성은 AI로 문제를 푸는데 있어서 점점 더 핵심적인 역할을 하게 될 것이다. 

 

AI를 만드는 환경은 이미 30년전쯤과 비교하면 완전 자동화 된게 아닐까 싶을 정도가 되어 있고 지금 아주 빠르게 더욱 자동화되어가고 있다. 그래서 AI 개발자가 되고자 하는 사람들은 AI 개발자가 되는 것이 컴퓨터 코딩을 하는 기술적인 부분을 말하는 거라면 진입장벽이 그다지 높지 않다는 것을 알아야 한다.  지금 openAI같은 회사에서 나오는 아이디어들은 사실 30년전에도 대개 다 있었던 아이디어들이다. 문제는 컴퓨팅 파워와 데이터였다. 그래서 지금은 미친듯이 돈을 퍼부어 그걸로 경쟁을 이기려고 하는 것이다. 그리고 이런 기본적 인프라를 위한 경쟁이 어느 정도 자리 잡으면 우리는 AI 개발자라는 것을 다시 생각하게 될 것이다.

 

PC가 보급되던 1970년대나 그 이전에는 컴퓨터에게 일을 시킬 수 있는 컴퓨터 프로그래머는 천재들로 보였다. 하지만 21세기에 단순히 컴퓨터 언어만 아는 사람은 전혀 고급인력으로 여겨지지 않으며 AI에 의해 대체되기 직전이다. 마찬가지로 AI 개발자라는 것이 위에서 언급한 자동화되는 부분에 대한 기술만 아는 사람이라면 지금은 그런 사람들의 가치가 옥석이 가려지지 않고 있지만 대다수 사람들은 빠르게 그 가치가 떨어질 것이다. 세상은 빠르게 발전하기 때문에 과거의 기술에 대해 자세히 아는 사람은 시스템이 바뀌면 그간에 공부한 것이 거의 필요가 없어진다. 그래서 AI 개발자라는 것은 점점 더 문제를 찾아내고 구성하는 사람이라는 의미를 가지게 될 것이다. 

 

이것은 인터넷의 시대에 인터넷 설치하는 법, 인터넷 통신 프로토콜의 전문가가 되는 법을 공부할 것인가 아니면 아마존같은 인터넷 상거래나 공유경제 사업같은 분야를 공부해서 사업을 할 것인가의 차이다. 인터넷의 시대란 모든 사람들이 인터넷 설치기사나 인터넷 기술 공학자가 되는 시대가 아니다. 모두가 인터넷을 사용해서 사업을 하는 시대다. 지금도 인터넷 설치기사가 있지만 그들이 이 사회의 중추이며 가장 진보적인 지식인이라고 생각하는 사람은 거의 없을 것이다. 

 

컴퓨터 프로그래머가 흔해지는 데는 수십년이 걸렸다. 인터넷은 1-20년정도에 전세계 어디나 있는 것이 되었다. AI 사회를 위한 기본 인프라가 깔리는 것은 이것들보다 더 빠를 것이다. 그러니까 10년 미만이고 5년정도일지도 모른다. 그래서 지금의 초등학생이 나는 커서 AI 개발자가 되겠다면서 지금의 AI 개발자가 하는 일을 공부하는 것은 조금만 잘못되면  무의미해질 수 있다. 그 아이가 20살이 될 때쯤에는 세상은 다를 것이기 때문이다. 그래서 AI 교육은 필요하지만 오해되어서는 안된다. 컴퓨터 코딩을 하거나 챗GPT를 열심히 써보는 것이 AI 교육의 몸통이 아니다. 우리가 배워야 하는 것은 AI 시대를 사는 법이다. 이들은 반드시 같은게 아니다. 

댓글