머신러닝AI2023. 6. 11. 17:50

 LLM을 돌리다보니 집의 데스크탑을 계속 개선하고 있는 나를 바라보면서 쌓인 지식들을 정리해두면 어떨까 싶어 기록해둔다. LLM이 돌아가려면 고용량 메모리, 고속의 CPU, 고속의 저장장치, 고속의 인터페이스 등에 대한 의외의 지식들이 필요하다. 더군다나 llama.cpp를 통해 촉발된 GPU없이 돌리는 LLAMA가 나온 마당에 데스크톱을 잘 업그레이드하면 괜찮은 실험환경을 구축할 수 있는 상황이 지속 마련되고 있다.

 

LLM을 위한 가정용 GPU 선택:

https://infoengineer.tistory.com/106

 

GPU없이 데스크탑 Ubuntu에서 돌리는 LLAMA인 llama.cpp 구동방법

https://infoengineer.tistory.com/107

 

결론부터 이야기하면 i7, i9의 최신 세대 CPU(13세대)에 가급적 Z계열(현재기준 Z690이나 Z790)의 메인보드와 DDR5메모리, PCIe-4.0이상 기반으로 구성하라는 이야기를 하고 싶은데, 각자의 상황에 따라 어떤 변화가 가능한지 아래  간단하게 필요한 지식을 알아보자.

 

1. PCI-Express 3,4,5 이해하기

 

GPU나 M.2 NVMe SSD 스토리지 든 이 PCI-Express 방식으로 메인보드에 연결되어 통신하는데 이 녀석이 버전이 있다. 3.0, 4.0, 5.0인데 속도 차이가 꽤 있다. 

wiki 참조

 대개 요즘 GPU는 PCI-e 4.0을 많이 지원한다. 그런데 메인보드가 PCI-e 3.0만 지원한다면 그 통신 속도가 줄어들 수 밖에 없다. 따라서 가급적 PCI-e 4.0을 지원하는 CPU와 메인보드 조합을 찾자. 참고로 인텔은 11세대 CPU부터 이 PCI-e 4.0을 지원한다고 한다. 대개 고가의 GPU가 PCIe-4.0x16 (16은 통신 lane 수) 정도를 지원하니 그에 맞춰서 CPU/메인보드를 선택해 주면 별다른 큰 가격차이 없이 통신 속도가 늘어날 수 있겠다.

 

 참고로 PCI-e는 하위 호환성이 있으므로 높은 버전의 PCI-e라고 해도 낮은 버전의 PCI-e에 꼽아서 작동시킬 수는 있다. 속도는 낮은 버전을 따라간다.

 

--> 최소 PCIe-4.0을 기준으로 부품들을 살펴보자

 

2. DDR4 vs DDR5 메모리

 

 메모리도 세대가 바뀌어서 DDR4에서 DDR5로 넘어왔다. 그리고 이 둘은 메모리 꼽는 슬롯의 모양이 달라서 서로 호환이 되지 않는다. 또한 CPU도 이 각각을 지원해야만 해당 메모리를 사용할 수 있다. 그런데 CPU는 이 둘을 다 지원하는 모델도 많다(DDR4, DDR5). 하지만 메인보드는 양쪽을 다 지원할 수 없다. 왜냐하면 슬롯 모양이 다르니 선택을 해야하기 때문이다(듀얼로 서로 다른 슬롯을 채용하는 경우는 없는 것으로 알고 있다). 따라서 DDR4냐 DDR5냐는 결정을 해야한다.

 

 그렇게 CPU가 결정되고, 메인보드가 결정되면 지원되는 메모리를 알 수 있다. 개인적으로는 여유가 있다면 인텔 13세대 이상에서 지원하는 DDR5로 가라고 권하고 싶다. DDR4나 DDR5가 속도차이가 크게 나지 않는다는 평이 있으나 클락스피드가 후자가 더 높고 앞으로 계속 그렇게 활용되지 않겠는가. 그리고 메인보드 별로 이 램 지원은 각기 다르니, 원하는 메인보드를 자세히 들여다볼 필요가 있다. 주의가 필요하다. 특히 메모리 관련해서는 메인보드의 최대 용량 확인도 필요하다. 최근 사양이면 128GB를 지원하고 예전 것도 64GB정도는 지원이 되는게 일반적이긴 하다.

 

 그리고 단면램/양면램 논쟁 등이 있는데 메모리 지원은 해당 메인보드사의 홈페이지에 대부분 자세히 설명되어 있다. 단면/양면의 구분은 최근에는 중요하지 않다고 한다.

 

--> DDR5로 갈 수 있으면 가는데, 안되면 DDR4도 나쁘지 않다. 다만 꼽을 수 있는 메모리 종류와 최대 메모리는 메인보드 확인이 필요하다. 여유가 있어 128GB를 확보하면(32GB*4) llama.cpp에서 엄청난 모델을 돌려볼 수 있을지 모른다.

 

3. M.2 NVMe SSD 내장 스토리지

 

 이제 SATA방식보다는 NVMe가 훨씬 고속의 인터페이스이기 때문에 저장장치는 NVMe SSD를 고르는게 좋다. 그런데 여기서 잘 봐야하는 것은 PCIe 3.0인지 4.0인지나 실제 읽고 쓰는 속도이다. 삼성 980 pro M.2 NVMe정도 되면 PCIe-4.0을 지원하면서 7GB/s의 순차 읽기 속도를 지원한다. 반면에 970은 PCIe-3.0급이다. 가격차이가 크지 않으니 PCIe-4.0급의 NVMe를 고르고, 메인보드도 그렇게 지원하는지 확인하자. 대개 고사양 메인보드는 M.2를 4개까지 장착할 수 있는 경우가 많으니 고사양을 몇개 달아 사용해도 좋다. 과거보다 NVMe SSD는 타 부품대비 그렇게 비싸지 않다.

 

--> PCIe-4.0급의 NVMe SSD를 스토리지로 활용하자.


4. CPU는 어디까지 올릴 수 있는가?

 현행 인텔 CPU는 i3,i5,i7,i9에 13세대까지 출시되었다. 그리고 i3~i9는 숫자가 높을수록 코어수나 내부 캐시가 올라간다. 즉, 점점더 전문가용이다. 대개는 i7정도면 전문 게임용으로 홍보해서 판매한다. 

인텔 CPU의 세대별 속도 보는법

사실 최근에는 의외로 CPU별로 성능 차이가 크지 않지만, CPU는 메인보드 칩셋을 결정하고 그에 따라 앞서 밝힌 DDR4/DDR5여부, PCIe 지원 버전등을 같이 결정한다. 즉 메모리의 속도, 컴퓨터의 인터페이스 속도까지(메모리/CPU간, GPU/메인보드간) CPU와 그 시기 출시된 메인보드가 같이 세트가 되어 정해버리는 것이다. 아래는 10세대의 i3~i9 비교 표이다. core나 thread, cache등을 확인해보자.

물론 후자로 갈수록 소비 전력도 크다(i9정도면 100W급이라고 가정하면 된다)

정보공장 tistory 발췌, 10세대 인텔 CPU i값에 따른 비교 예시

여기서는 따라서 최신 세대(13세대)의 i7이나 i9를 추천한다. 주변 인터페이스의 속도가 최신이기 때문이다. 그리고 CPU에 맨 뒤에 알파벳이 붙는데 F는 내장 그래픽카드가 없고, K는 개선버전/오버클락 가능 버전이다. 어차피 GPU를 쓴다면 F버전을 선택해서 가격을 낮추는 방법도 있겠다. 오버클러킹을 하겠다면 K가 붙은 CPU를 구매하면 된다.

 

--> i7 13세대 CPU 이상 선택을 추천한다. 바로 이어 설명할 고급형 Z계열 메인보드와 오버클러킹 등 염두해두려면 K가 붙은 오버클러킹 허용 개선 버전을 선택하자.

 

5. 메인보드

 

 개인적으로는 메인보드를 중요하게 생각한다. 특히 LLM용 메인보드는 여러가지 발열 처리 등 때문에 ATX형(micro ATX같은 미니형이 아닌)을 채용해야 하고 그렇게 하면 디스크 장착 등에도 공간 여유가 있다.

 메인보드는 CPU와 그에 따른 칩셋으로 크게 결정되는데 흔히 H(보급형), B(작은크기용, mATX), Z(고급형, 오버클러킹용)로 시작된다. 이를 테면 Asrock Z790이면 고급형 보드이면서 오버클러킹도 가능하다. 따라서 이 계열에서는 상기 CPU에서 마지막 K붙은 것을 구매해 여러가지 오버클러킹도 같이 할 수 있다.

 

 H,B,Z의 각 뒤 숫자도 중요하다. 그 안에서는 해당 숫자가 높을수록 고급형이기 때문이다. H7xx, H8xx정도 되면 중고급에 속하게 된다.

각 CPU세대 별로 해당 숫자의 차이가 클 수도 작을 수도 있다. 일례로 고급형인 Z690과 Z790은 특이한 성능 차이는 없다고 평가받는다.

(통상은 Z790이 좋아야 한다)

 

--> H상위 버전, Z버전을 구매한다. 여기서는 13세대 CPU를 추천하고 있으므로 그에 맞는 Z690, Z790계열의 고급형 메인보드를 추천한다.

 

6. 케이스/파워

 고성능 PC는 생각보다 발열 관리가 중요하다. 파워도 마찬가지다. CPU가 100W, GPU가 400W쯤 소모한다고 잡으면 나머지 여러가지 잡다한 팬/스토리지 등 해서 100W를 추가하면 600W급의 파워가 필수가 되는데, 시장에서는 600W급 파워를 사도 500W정도 밖에 공급이 안된다는 설이 많다. 따라서 제대로 대응하려면 800W 정도를 사야 갑자기 PC가 꺼지는 상황을 막을 수 있다.

 

 케이스는 전면과 후면 모두에 팬이 붙되 조금 조용한 버전을 사야한다. CPU의 쿨러도 기본 쿨러보다는 발열을 줄일 수 있는 쿨러를 탑재하자. ATX보드를 기본으로 할테니 사이즈가 좀 클 것이다. ATX형 케이스도 가끔씩은 대형 GPU(?)는 들어가지 않을 수도 있으니 사전에 GPU 크기에 대한 고려가 되어있는 케이스인지 확인이 필요하다.

 

--> ATX형 좀 넉넉한 케이스에 팬은 전반/후반 모두 채용된 것으로 구매한다. 안이 보이거나 잘 열리면 더 좋다. 파워는 상황에 따라 다르지만 최소 700W이상, 많으면 1,000W까지 고려하자.

 

 

여기까지 일단 간단히 살펴보았다. 생각보다 전체를 고려하면 쉽지 않지만 이 틀하에서 잘 선택하여 가성비 좋은 구성이 되도록 빈다.

반응형
Posted by 작동미학
순수수학2023. 6. 8. 00:43

1. 왜 수학은 인간에게 직관적이지 못할까?

 

 수학공부를 하면서 방정식을 보면 무슨 의미인지 금방 떠오르는 상태(수학적인 감각이 충만한)를 동경한 적이 있다. 그러나 지금에 와서 보면 그것은 그저 작은 영역에서나 가능한게 아닌가 싶다. 인간은 수학이라는 논리 체계를 자연스럽게 받아들이기 어렵다.

 

 -1과 -1을 곱하면 양수 +1이 되는 부분은 해당 연산 체계가 무모순적이 되기 위한 필수인데, 인간은 직관적으로는 이것을 받아들이기 어렵다. 외우거나 혹은 이렇게 해야만 모순이 없다는 사실을 그저 받아들여야 한다. 그러나 음수와 양수를 대칭상에서, 한 직선상의 양측 관계로, 마음으로 이해한다면, -1과 -1을 곱하는 것이 음의 반대방향으로 가는 것이라는 직관에 다가가게 된다. 당연하게 보자마자 양수가 떠오르게 될 수도 있겠다. 뜨거운 것을 만지면 그러기 싫어도 앗뜨거워 하면서 소리를 지르는 것처럼 말이다.

 

 그러나 인간의 직관이란 상당히 편협한 시간과 공간, 경험에 의존하게 된다. 우리의 머리속은 떨어지는 공을 자연스럽게 받아들일 수 있지만, 미시세계의 일은 도저히 이해할 수가 없다. 만약에 우리가 미시세계에서 지속 살아왔더라면, 반대로 떨어지는 공을 자연스럽게 받는 것같은 일을 도저히 이해할 수 없었을 것이다. 그런 세상은 거시세계라는 뉴튼 역학의 방정식으로나 존재하는 세상인 것이다. 대체 이해할 수가 없는.

 

 그래서 미시적인 세계는 양자역학 파동방정식에 의해서 아름답게 기술되고 정확히 예측할 수 있지만, 인간은 아무리 들여다봐도 그 방정식이 나타나는 세계를 머리속에 아주 명료하게 떠오르기란 쉽지 않은 것이다.

 

 그렇다. 애초에 수학이 바라보는 세상과 사람이 바라보는 세상은 근본적으로 다르다. 전자가 훨씬더 객관적이고 정밀하다. 후자는 살아남기에 급급한 생물이 갖추어야할 수많은 본성에 사로잡혀 있으므로(!) 이 아름답고 우하한 수학 방정식들을 직관적으로 이해하기가 쉽지 않겠다. 그리고 불행히도 자연은 이 수학을 쏙 빼닮았다. 그래서 사실은 마치 인간이 아주 편안하게 자연을 이해한다고 생각하겠지만, 실제 자연의 모든것을 이해하기 어려운 것이다. 직관적이지 않은 수많은 것들이 자연 어딘가 극단의 세계에 가득하다. 기나긴 수렵채집 기간을 지나오는 동안 생존에 목마른 인간이 전혀 관심갖을 만한 모습이 아니라면, 이런 극단들을 이해할 수 있는 틀 같은 것은 갖출 수 있었을 리 만무하다. 의식주 해결하기 바쁜데 보이지도 않는 블랙홀이나 분자수준의 일이 대체 무슨 상관이었겠는가.

 

 그래서 수학을 직관적으로 이해하지 못하는 것은 우리 거의 모든 인류가 마찬가지라고 볼 수가 있겠다. 오히려 훈련을 통해 상상력을 통해 그것을 극복해낸 선대 과학자들이 존경스러울 따름이다. 캄캄한 방에서 보지도 듣지도 못하는 것을 온갖 실험과 가설을 통해 시행착오 끝에 알아낸 것 아니겠는가. 그 과정이 얼마나 쉽지 않았겠는가. 리처드 파인만 교수가 이야기한대로 "자연은 우리보다 훨씬 더 큰 상상력을 지녔다."

 

2. 무한에 대해 이해하기

 

 무한은 자연에서는 관측하기 어렵지만, 수 체계에서는 어렵지 않게 만날 수 있다. 사칙연산 중에 0으로 나눔으로써 순식간에 무한을 창조해낼 수 있다. 혹은 간단하게 모든 자연수의 집합을 가정함으로써 무한개의 원소를 가진 존재를 만들어 낼 수 있다. 자연에서는 도통 확인할 수 없는 전체로의 무한이, 수학에서는 이렇게 종종 나타난다.

 

 인류가 이 무한을 이해할 수 있는 체계를 갖추었다는 것은 더이상 그 앞에서 더 진도를 못나간거나 함정에 빠지지 않아도 된다는 것을 의미한다. 모든 자연수의 집합을 가지고 무언가를 하려면 전에는 쉽지 않았다. 그것이 무엇을 의미하는지 명확히 설명하기가 어려웠기 때문이다. 무한을 그저 증가하는 상태라고만 여겼지, 전체적으로 이해하지 못했기 때문에 그것을 하나의 값으로 다룰 수가 없었다. 그래서 수없이 많은 벽에 마주했었다.

 

 간단하게는 만약에 우주가 가진 시간이 무한히 끝나지 않는다고 가정해보자(개인적으로는 그러지 않을 아무런 증거도 현대과학이 찾지 못했다고 생각한다) 만약에 우리가 무한을 제대로 이해하지 못하고 있다면 우리는 이 상황을 수학적으로 기술하기 어려웠을테고 이것을 통째로 다루지도 못했을 것이다. 그러나 지금은 그렇지 않다. 이 무한의 시간에서 예측하고 싶은 것이 있다면? 당연히 예측할 수 있다. 가장 간단하고 흥미로운 것이 엔트로피의 법칙이다. 밀폐되고 고정된 공간안에서는 뜨거운 물과 차가운 물이 만났다고 치자. 곧 모든 분자들이 무질서도가 극대화된 상태로 달려가서 그 중간온도 어디에서 평형을 이룬다. 그런데 만약 무한의 시간이 주어진다면 어떻게 될까? 정답은 처음대로 돌아가는 상황이 생긴다. 그것도 무한번 생긴다.

 

 물론 자연의 우주는 가속팽창하고 있다고 인정받기 때문에 이 상황을 우주에 적용할 수는 없지만, 우리는 무한의 무엇인가를 이제 제법 특정 값으로 상정하여 예측해볼 수 있다.

 

 인간이 수학적인 체계내에서 직관을 넘어서 무언가를 이해하고 그리고 그것을 써먹을 수 있는 재미있는 것 중의 하나가 이렇게 무한이라고 생각한다.

 

반응형
Posted by 작동미학
머신러닝AI2023. 6. 6. 22:48

 이 글은 llama.cpp 프로젝트에 대한 소개다. 이 프로젝트는 기본적으로 맥북에서 LLAMA를 돌리는 것이 목표였는데, 다행스럽게도 linux x86에서 충분한 메모리만 있어도 LLAMA의 대형 모델을 구동할 수 있다.

 

 GPU 메모리가 아닌 일반 메모리에서도 LLAMA를 탑재해 구동할 수 있는 것이다! 설명은 우선 ubuntu linux(20.04이지만 상위 버전에서도 잘 되리라 본다) 를 중심으로 해본다. 어렵지 않게 따라가볼 수 있다. 애플 맥북에서도 아래 가이드에 따라 적당하게 골라서 컴파일하면 실행할 수 있다.

 

https://github.com/ggerganov/llama.cpp

 

GitHub - ggerganov/llama.cpp: Port of Facebook's LLaMA model in C/C++

Port of Facebook's LLaMA model in C/C++. Contribute to ggerganov/llama.cpp development by creating an account on GitHub.

github.com

 

1) 우선 컴파일을 하자.

 

1.1) CPU만으로 구동

 

$ git clone https://github.com/ggerganov/llama.cpp

$ cd llama.cpp

$ make

$ ./main

main: build = 626 (2d43387)
main: seed  = 1686058067
..

 

라고 나오면 정상이다.

 

1.2) GPU 가속의 도움을 얻도록 구동(GPU보유자만)

 

혹시 GPU가 있다면 cuBLAS를 통해 GPU가속기능을 쓸 수 있다고 되어 있다. 이 경우에는 cmake를 통해 컴파일해보자. 사실 단순히 구동에 있어서는 필요 없으므로 건너뛰어도 무방하다.

 

# /work/llama.cpp디렉토리에 설치한다고 가정했다

 

$ cd /work

$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp

$ mkdir build

$ cd build

$ cmake .. -DLLAMA_CUBLAS=ON

$ cmake --build . --config Release

$ cd bin

$ ./main

..

라고 나오면 정상이다.

 

2) LLAMA 모델을 다운로드 받자.

 

이것은 받아둔 사람이 있다면 넘어가면 되고, 받지 않는 사람은 아래 방법으로 받자. 대형 모델은 시간이 좀 오래 걸릴 수도 있다. 아래 LLAMA 모델의 사이즈를 참고하자.

 

Model Original Size Quantized Size(4bit)
7B 13 GB 3.9 GB
13B 24 GB 7.8 GB
30B 60 GB 19.5 GB
65B 120 GB 38.5 GB

 

# /work/llama_data에 모델을 다운로드 받는다고 가정하자. 다른곳에 저장해도 좋다.

 

 $ cd /work

 $ mkdir llama_data

 $ git clone https://github.com/juncongmoo/pyllama

 $ cd pyllama

 $ pip install pyllama -U

 $ pip install -r requirements.txt    #이 설치가 pyllama설치만으로도 처리되어, 필요했는지 불명확한데 일단 실행하자

#필요한용량을 아래 선택해서 받는다

 $ python -m llama.download --model_size 7B --folder ../llama_data

 $ python -m llama.download --model_size 13B --folder ../llama_data

 $ python -m llama.download --model_size 30B --folder ../llama_data

 

3) 이제 llama.cpp를 실행해보자.

 

여기서는 7B 모델을 실행했지만, 다운받은 모델에 맞춰 7B라는 이름만 바꿔서 실행하면 된다.

 

 $ cd /work/llama.cpp

 $ python -m pip install -r requirements.txt

 $ python convert.py ../llama_data/7B/

 $ ./quantize ../llama_data/7B/ggml-model-f16.bin ../llama_data/7B/ggml-model-q4_0.bin q4_0

 $ ./main -m ../llama_data/7B/ggml-model-q4_0.bin -n 128

main: build = 626 (2d43387)
main: seed  = 1686058857
llama.cpp: loading model from ../../../llama_data/7B/ggml-model-q4_0.bin
llama_model_load_internal: format     = ggjt v3 (latest)
llama_model_load_internal: n_vocab    = 32000
llama_model_load_internal: n_ctx      = 512
llama_model_load_internal: n_embd     = 4096
llama_model_load_internal: n_mult     = 256
llama_model_load_internal: n_head     = 32
llama_model_load_internal: n_layer    = 32
llama_model_load_internal: n_rot      = 128
llama_model_load_internal: ftype      = 2 (mostly Q4_0)
llama_model_load_internal: n_ff       = 11008
llama_model_load_internal: n_parts    = 1
llama_model_load_internal: model size = 7B
llama_model_load_internal: ggml ctx size =    0.07 MB
llama_model_load_internal: using CUDA for GPU acceleration
llama_model_load_internal: mem required  = 5407.71 MB (+ 1026.00 MB per state)
llama_model_load_internal: offloading 0 layers to GPU
llama_model_load_internal: total VRAM used: 0 MB
.
llama_init_from_file: kv self size  =  256.00 MB

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 | 
sampling: repeat_last_n = 64, repeat_penalty = 1.100000, presence_penalty = 0.000000, frequency_penalty = 0.000000, top_k = 40, tfs_z = 1.000000, top_p = 0.950000, typical_p = 1.000000, temp = 0.800000, mirostat = 0, mirostat_lr = 0.100000, mirostat_ent = 5.000000
generate: n_ctx = 512, n_batch = 512, n_predict = 128, n_keep = 0


 1960: The Beatles at Blackpool
1960 was an eventful year for the Beatles. John Lennon's father, a merchant seaman, died in January and his mother was admitted to hospital after suffering a nervous breakdown. As a result of these family crises they had to give up their studies at college and work full-time ..

 

#interactive한 대화도 가능하다

 $ ./main -m ../llama_data/7B/ggml-model-q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" -f prompts/chat-with-bob.txt

 

속도는 느리지만, 일반 linux PC에서도 잘 작동하는 것을 알 수 있다.(30B정도 모델이 되면 답답하게 느려짐을 체감할 수 있긴 하다)

 

4) 맥북 M1, M2 유저라면 맥북의 GPU 가속 기능을 쓸 수도 있다.

 

M1, M2 챕 맥북을 가진 유저라면 상기 make시에 Metal로 컴파일하여 빠른 속도를 체감해보면 더 좋겠다. 상세내용은 llama.cpp github을 참조하자.

 

$ LLAM_METAL=1 make

 

5) 다른 종류의 chat 모델도 시험해볼까?

LLAMA의 다양한 quantized 모델이 huggingface에 등록되어 있다. 예를 들면 TheBloke의 아래 모델을 보자.

 

https://huggingface.co/TheBloke/Llama-2-13B-chat-GGML 

 

TheBloke/Llama-2-13B-chat-GGML · Hugging Face

Inference API has been turned off for this model.

huggingface.co

 

여기서 llama-2-13b-chat.ggmlv3.q4_0.bin 라는 chat 모델을 다운로드 받으면 아래와 같이 실험해볼 수 있다.

 

$ ./main -m llama-2-13b-chat.ggmlv3.q4_0.bin -n 256 --repeat_penalty 1.0 --color -i -r "User:" --prompt "could you generate python code for generating prime numbers?"

 

.... 여러가지 CPU에서는 느리지만 잘 나온다는 것을 알 수 있다.

 

반응형
Posted by 작동미학
머신러닝AI2023. 6. 6. 19:58

 ChatGPT같은 LLM을 구동하기 위해서는 대부분 A100같은 80GB의 메모리 GPU 여러장을 필요로 한다. 다른 머신러닝 연산과도 다른 것이 그 커다란 언어모델을 GPU에 적재하고 처리하기 때문에 특히 GPU 메모리가 많이 필요하다.

 

 따라서 이런 LLM을 직접 하기 위해서는 클라우드를 사용하게 되는데, 집에서 간단히 해볼 수는 없을까? 언어모델들 크기도 줄어든다는데 일정수준을 해보고 싶자면 어떤 GPU를 택하면 좋을지 고민이 된다. 그래서 이럴때 GPU를 선택하는 법을 간단히 적어보자. 우선 아래 각 RTX 모델별 메모리나 소비 전력을 살펴보자.

 

모델명(NVIDIA RTX) 최대메모리(GB) 방식/선폭 소비전력(W)
3060 8 GA107/8nm 200
3070 8 GA104/8nm 220
3080 12 GA102/8nm 350
3090 24 GA102/8nm 350
4060 8 AD107/4nm 115
4060ti 16 AD106/4nm 160
4070 12 AD104/4nm 200
4080 16 AD103/4nm 320
4090 24 AD102/4nm 450

 

 LLM을 다양하게 구동하다보면 늘 어려운 것은 GPU 메모리 용량 확보이다. 속도는 둘째 문제이고 사실 그렇게 몇배까지 차이가 나지 않는다. LLAMA 7B모델을 돌려라도 보려면 모델만 13GB정도를 GPU메모리에 올려야 하니 일단 RTX xx60시리즈는 난감하게 된다. 심지어 용량을 축소하는 quantized 코드(소수점 정확도를 줄여서 용량을 늘리는 기술이다)들도 메모리를 많이 쓰기 때문에 그때도 막히는 경우가 있다. 여하튼 메모리가 커야한다.

 

 그래서 가정용으로 취할 수 있는 선택은 우선 GPU 메모리 16GB인 4060ti, 4080이 있다. 가격면이나 소비전력 면에서는 4060ti와 4080이 16G관점에서 후보가 된다. 그리고 그 다음은 24GB인 3090, 4090이 있다. 다만 4090은 너무 고가이기 때문에, 대략 4060ti, 4080, 3090정도가 가정용으로 선택할 수 있는 합리적인 선택이어 보인다.

 

 그리고 또하나 고용량 GPU를 처음 구비하는 사람이 놓칠 수 있는 것은 이 소비 전력이다. 4080(320W)급의 GPU도 권장 PC파워서플라이어 용량이 800W 정도를 거론한다. 원래 파워가 표기 용량보다 좀 적은 부분도 있고, 다른 주변기기들 때문에 PC가 그 정도의 총 전력을 소모하리라 보는 것이다. 특히 GPU의 발열 때문에 팬이 빠르게 많이 돌면 상대적으로 소비 전력이 올라갈 수 있다. 집에 전력 측정기(power meter)같은 것이 있어서 PC의 통상 전력을 알 수 있다면 거기에 약간의 보험을 더해서 파워를 준비해둘 필요가 있다. 본인의 경우에는 통상 GPU미사용시 150W를 넘은 적이 없으므로 상기 GPU소모량의 120%를 더해서 파워를 갖추어도 문제는 없었다. 파워가 부족하면 PC가 예고없이 다운될 수도 있으므로 그래도 조심할 필요가 있다.  그리고 이와 더불어 이 GPU를 제대로 구동할 수 있는 PC 스펙에 대해서는 아래와 같인 고민이 필요하다.

 

https://infoengineer.tistory.com/109

 

Meta LLAMA를 잘 돌리기 위한 데스크탑 PC 업그레이드

LLM을 돌리다보니 집의 데스크탑을 계속 개선하고 있는 나를 바라보면서 쌓인 지식들을 정리해두면 어떨까 싶어 기록해둔다. LLM이 돌아가려면 고용량 메모리, 고속의 CPU, 고속의 저장장치, 고속

infoengineer.tistory.com

 

 서버급을 참고삼아 살펴보면, 이제 A40, A100같은 선택들이 존재한다. 다만 이 녀석들은 모두 지나치게 고가이고 소비 전력도 더 크기 때문에 그다지 가정용으로 하기는 쉽지 않을테다. GPU가 부담스럽다면 최근의 llama.cpp 프로젝트를 참고해보는 것도 좋다. 메인보드 메모리만으로도 우선 LLAMA를 돌려볼 수는 있다. 다만 고용량 모델로 갈수록 병렬 부동소수점 연산이 GPU에 뒤쳐질테니 더 느려지는 것은 어쩔 수 없을 수 있다. 그래도 quantize할때 등 사용할 수 있고, M1/M2칩 탑재한 애플 맥북에서는 꽤 속도도 빠르다고 알려져 있다. 이 부분은 아래를 참조하자.

 

https://infoengineer.tistory.com/107

 

Meta LLAMA를 GPU없이 CPU 메모리에서 돌려보자

이 글은 llama.cpp 프로젝트에 대한 소개다. 이 프로젝트는 기본적으로 맥북에서 LLAMA를 돌리는 것이 목표였는데, 다행스럽게도 linux x86에서 충분한 메모리만 있어도 LLAMA의 대형 모델을 구동할 수

infoengineer.tistory.com

 

반응형
Posted by 작동미학
머신러닝AI2023. 5. 20. 15:44

최근에 일리야 서츠케버(Ilya Sutskever, OpenAI의 수석과학자)와 젠슨 황(Jenson Hwang, Nvidia CEO)의 대담이 유투브에 올라왔다. 개인적으로는 OpenAI의 ChatGPT가 함의하는 바를 그 분야를 가장 앞에서 다루는 사람이 설명하고 있다고 생각해 그에 대한 글을 써보려고 한다.

 

https://www.youtube.com/watch?v=LQviQS24uQY 

 

일리야 서츠케버는 힌튼 교수의 제자이며 딥러닝의 문을 열었다고 평가되는 이미지 인식 모델인 AlexNet을 같이 연구한 전산학도이고, 이후 OpenAI의 초기 창업자로 합류한 인물이다. 이 대담에서는 그런 그의 첫번째 깨달음이 나온다.

 

 신경망이 충분히 깊고 크다면 어려운 문제를 풀 수 있을거라는 것이라는 믿음으로 AlexNet을 연구한 결과이다. 여러가지 딥러닝 기술로 신경망 학습의 제약이 많이 줄어든 상태에서, GPU를 사용해 연산 속도를 극적으로 높이고, 당시에 아무도 시도하지 않았던, 큰 크기의 신경망을 통해 이미지 인식 분야에서 오차를 크게 줄인 일이다. 그 일로 서츠케버는 큰 규모의 신경망에 대한 일종의 믿음이 생겼다고 한다. 모두 작은 크기의 신경망만 다루던 그 시절에서 크기를 키웠을 때의 성능 개선이 가능하다는 사실을 큰 성공을 통해 깨달은 것이다.

 

 그 다음으로는 강화학습의 중요성이다. 딥마인드의 알파스타같이 지속 여러가지 피드백을 실시간으로 받아가며 학습하는 방법에 대한 연구이다. (개인적으로는 강화학습은 그때그때 필요한 데이터를 손쉽게 만들어내는 방법이라고 생각한다.) 그러한 경험에 기반해 드디어 ChatGPT로 넘어간다.

 

 그 과정에서 핵심이 되는 질문은 "과연 거대한 Text Corpus에서의 빈 단어 예측이 신경망에 무엇을 학습시키는 것인가?"이다. 그는 인터넷의 문장들은 일종의 세상에 대한 투영이고, 문장의 가려진 빈칸을 맞추는 학습 방법은 그 세상을 이해해가는 작업이라고 주장한다. 충분히 더 큰 신경망에서는, 이렇게 학습된 모델(ChatGPT)이 단지 디지털 앵무새가 아니라 더 큰 추론의 힘을 지니는 무엇인가라는 말이다. 추리 소설을 예로 드는데 탐정이 여러가지 정보를 수집한 후 범인은 누구누구다 라고 맞추는 것을 예로 든다. 정확히 신경망 학습이 내부적으로 어떠한 의미 체계를 만들어 작동하는지 알 수 없지만, 무언가 추론 체계를 만들어 낸다는 말이다.

 

 그리고 이는 일부분 사실로 증명되고 있다. 1000억 파라메터가 넘어갔을때 ChatGPT는 단순히 흉내내기 그 이상으로 반응한다는 것이다. 아직은 완전하지 않더라도, 일반적인 고확률의 단어 시퀀스를 출력한다기보다는 무언가 다른 일을 해낸다. 그리고 그 이유는 이 신경망이 매우 크고, 엄청난 문장 데이터로 학습을 했기 때문이라고 이야기하고 있다. (물론 이러한 학습방법이 어디까지의 추론 능력을 부여할 수 있는지는 아직 여러가지 논쟁이 있다. 문장만으로 과연 기계가 어디까지 알아낼 수 있느냐는 의문이다)

 

 오히려 인간 대비 유리한 점은, 보통의 인간이 평생 배우지 못할 수많은 문장들을 모두 학습한다는 점이 있다. 그렇게 대규모의 신경망이 어찌보면 인간과 유사한 몇몇 기능을 수행할 수 있다는 사실을, 컴퓨팅의 진보와 실제 시행착오를 통해 증명했다는 점이 ChatGPT가 해낸 일이라고 할 수 있다는 주장이다.

 

 그러면 그 다음은 무엇인가? 신경망 학습이 가능해지는 범위내에서 더  큰 다른 유형의 데이터와 컴퓨팅으로 늘려가는 방법이 있겠다. 그러면 신경망은 훨씬 더 큰 맥락하에서 다양한 단어의 의미를 이해하고 더 넓은 추론이 가능한 신경망을 갖추게 될 수 있는 것은 아닐까? 그래서 영상에서는 멀티모달 관련된 내용이 나온다.

 

 대규모 Text Corpus에 맥락을 찾아내는 이 비지도 학습 외에 사진이나 영상, 음성에서 유사한 비지도 학습이 가능하게 된다면 어떨까? 문장이 가진 세계와 지식과 추론을 기계에게 가르칠 수 있다면, 이제 시각을 보여주고 영상, 음성을 보여줌으로써 더 많은 세상을 기계에게 이해 시킬 수 있다. 대담에서는 서츠케버가 ChatGPT에 시험 문제를 풀게 할때 다이어그램을 볼 수 있게 해주면 정답률이 올라간다고 이야기하고 있다. 더 많은 세상에 대한 정보를 줄 수록, 신경망의 크기만 키우고 컴퓨팅만 감당된다면, 그것이 어떻게든 가능해질 수 있다는 기대를 하게 되는 셈이다.

 

 물론 이런 세계에 대한 표상을 신경망이 갖더라도, 그것으로 무언가 우리가 원하는 일을 하게 하기 위해서는 강화학습이 별도로 필요하다고 이야기하고 있다(왜냐하면 text corpus가 표상하는 대로 생성하면 여러가지 좋지 않은 것들을 거르지 않고 출력하기 때문이다. 편견, 성인물 등) 그런데 어찌보면 AlexNet, 알파고, ChatGPT 등이 거쳐온 흐름은 명확해보인다. 더 큰 신경망과 연산 속도 더 큰 데이터를 가지면, 점점더 인간이 가진 지식과 능력을 신경망 안에 집어 넣을 수 있다는 믿음이 확산되는 것이다.

 

 ChatGPT는 당분간은 이러한 세계에 대한 표상을 사람에게 서비스하기 위해, 그 신뢰도를 높이는 작업들을 진행할 것으로 보인다. 그런데 앞서 지적했듯이 사진이나, 영상, 음성 등 기계에게 세상을 더 자세히 표현할 수 있는 것들을 더 학습시키면, 기존의 인간보다 더 많은 지식을 이해하고 그것의 총체를 더 다룰 수 있는 상태로 나아갈 수 있지 않을까 싶은 생각이 이 영상을 보고 떠올랐다. 인류가 기존에 보유한 최대한의 데이터로 세상을 표상한 후에, 여러가지 강화학습을 통해 맥락을 추가로 학습하고, 그것이 더 큰 신경망 더 많은 데이터, 더 손쉬운 비지도 학습법 등을 개발해나가면 점점 더 인간과 비슷한 기능을 갖추게 되는게 아닌가?

 

서츠케버는 지난 20년간의 이 분야 개척을 통해 그 사실을 깨달은 것이 아닌가 싶은 것이다.

 

결론적으로 이 대담을 통해 개인적으로 느낀 insight는 다음과 같다.

 

1) 대규모 언어 모델은 단지 인류가 모은 문장들을 가지고, 문장을 생성하는 디지털 앵무새라고 생각했었다. 인간이 하는 것과 같은 대화나 추론과는 거리가 있고 그것을 학습하는 방식은 아닌 것이라고 말이다. 그러나 다른 관점으로 생각해볼 수 있다.

 

2) 이제 충분히 큰 신경망을 어느정도로 안정화해서 학습할 수 있다. 더 많은 데이터(가급적 비지도 학습이 가능한)와 더 많은 컴퓨팅 그리고 이후에 강화학습을 통해 원하는 기능을 만들면 되는 상태가 아닐까 기대할 수 있게 되었다.

 

3) 지금 축적된 대규모 문장들은 인간이 가진 지식의 총합이다. 따라서 1)에도 불구하고 2)에 기반해서 신경망이 충분히 커지면, 단지 비어있는 단어를 학습하는 것만으로도 어느 정도의 추론 능력을 갖출 수도 있다. 기계는 인간의 아이와는 달리 이 세상에 대한 학습이 매우 어려웠는데, 비교도 할 수 없을 다양한 문장 들(인간이 평생 접하는 내용보다 훨씬 더 많은)로 좀더 비효율적이지만, 어쨌듯 목적을 일부 달성하는 방법을 찾은 셈이다. 아직까지 이러한 간접적인 학습이 가능한 것인지는 논란의 여지가 있지만, 일부분 되고 있는 증거가 없는 것은 아니다(물론 못한다는 증거도 같이 공존하지만)

 

4) 실제 세상에서 인간형태로 학습하는 무언가가 나오기 전이라도 이렇게 학습가능한 데이터를 더 큰 신경망에 학습시키는 전략도, 현재 기술로 가능한 AGI를 추구하는 방법이 될 수도 있다.

 

그 분야에서 많은 시행착오를 거친 지식이 아닐 수 없다. 과거 산업혁명을 이끈 증기 엔진 개발은 신비하게도 이론적으로 완벽하게 그것을 다룬 이들이 아니라, 여러가지 시행착오 속에서 이론에 부족함 많았던, 엔진을 개선시킨 엔지니어들을 통해 진행되었다는 역사를 인류는 한번 목격한 바 있다. 지금 이 분야도 그렇게 성장할 수도 있지 않을까. 신경망의 창발성이나 이론적 배경은 아직 모호하지만 그렇다고 앞으로 나갈 수 없는 것은 아닌 것이 아닐까. 대규모 문장과 컴퓨팅 그리고 신경망으로, 마치 직접적으로 의도하지는 않은, 인간에 필적하는 몇가지를 배울 수 있다니, 놀랍지 않은가. 좀더 신경망 상위 수준의 추상적인 학습 증진법이 개발되고 인간처럼 직접 대화하면서 기계가 배워나갈 수 있다면 무언가 AGI(일반인공지능)를 위해 더 시도해볼 수도 있게 되지 않을까 꿈을 꾸어 본다.

 

 

반응형
Posted by 작동미학
머신러닝AI2023. 5. 7. 13:34

 ChatGPT의 학습 데이터는 5천억 토큰으로 알려져있다. 토큰은 단어보다는 약간 더 작은, ChatGPT가 알고리즘으로 찾아낸 최소한의 문장 구성 요소들이다. 영어같은 경우는 영어 단어 정도 단위이고, 한글의 경우에는 거의 자소단위로 분할되었다고 한다(더 정확히는 UniCode를 몇개로 분할한 단위라고 한다. 자소단위 급이다)

 

 그리고 이 데이터들은 특히 인터넷에서 crawling(툴을 통해 인터넷 데이터를 자동 수집)하는 형태로 수집되었을 것이다. 위키피디아 같이 그나마 몇몇의 검증을 거친 문장들이 ChatGPT가 인류의 지식을 신경망에 넣을 수 있는 중요한 원천이 되겠다. 여하튼 디지털 형태로 된 문장들 5천억 토큰 어치를 ChatGPT에 집어 넣은 것이다.

 

 그리고 이제 이 ChatGPT는 재미있게도 다른 LLM들을 학습하는 데도 사용된다. 사람처럼 꽤 많이 어떤 데이터를 생성해주기 때문에 그런 길을 걸을 수 있다. 그리고 이 모든 것이 디지털화된 수많은 문장들, 특히 인터넷이 있기에 가능했겠다.

 

 돌이켜보면 인류가 인터넷에 정보를 올려놓고 본격적으로 활용하기 시작한 것은 1990년대 정도로 볼 수 있다. 물론 인터넷은 더 일찍 시작되었고(1969년), 1980년대에도 사설로 몇가지 시험되었지만, WWW이 태동되고, 브라우저(1990년대 초/중반)가 나오면서 인류는 방대한 정보의 네트워크를 구축하게 되었다.

 

https://www.sciencetimes.co.kr/news/%ED%95%9C%EA%B5%AD-%EC%9D%B8%ED%84%B0%EB%84%B7-%ED%83%9C%EB%8F%99%EA%B3%BC-%EC%84%B1%EC%9E%A5%EC%9D%98-%EC%97%AD%EC%82%AC/

 

국내외 과학기술동향, 정책, 문화 등 과기계 이슈 정보 제공. 매주 금요일 뉴스레터 발송

국내외 과학기술동향, 정책, 문화 등 과기계 이슈 정보 제공. 매주 금요일 뉴스레터 발송

www.sciencetimes.co.kr

 

그리고 이제 이 인터넷에는 인류의 모든 정보가 글자와 이미지 영상으로 담기게 된 셈이다. 2010년대의 구글의 이미지 인식 등도 인터넷을 통한 대량의 이미지 축적이 없었다면 쉽지 않았을테다. 아직 영상정보나 음성 등이 활용된 사례가 적지만, ChatGPT를 통해 기존의 label되지 않은 데이터들도 더욱더 학습에 사용될 수 있을지 모른다.

 

그러고보면 문명이 발생한 이래 이러한 AI가 학습을 하기 위해서 인류가 지금까지 발전되어 왔다고 표현될 수도 있지 않을까란 생각이 들었다. 그 기반위에 ChatGPT가 탄생했기 때문이다. 그리고 인류가 모아놓은 인터넷의 지식을 이제 마음껏 자동화하여 처리할 수 있게 되었으니 이 다음 단계는 또 무엇이 기다리고 있을까. 한번 학습되면 복사해서 수도없이 같은 기능을 전개할 수 있는 기반이 갖추어져있다. 이미 이런 전체적인 지식에 있어서는 한 개인을 충분히 초월하는 셈이 된 것은 어찌보면 이미 벌어진 일이었을지도 모르겠다. 앞으로 이런 인터넷의 자료들이 더 학습에 활용되는 방법이 찾아진다면 또 어떤 도약이 가능할지 궁금한 시기가 아니라 할 수 없다. 그렇게 인류는 이런 AGI들이 먹어치울 디지털로 된 자연의 정보를 구축해왔던게 아닌가라는 주객이 뒤바뀐 생각도 들게 될 수 있는것 아닌가.

 

 

반응형
Posted by 작동미학
머신러닝AI2023. 5. 5. 15:03

 이미 딥러닝 역사의 아버지 역할을 하게 된 힌튼교수(캐나다 토론토 대학교 교수)가 최근 겸직하던 구글을 그만두었다. 회사에 몸담고 있는 입장에서는 최근 AI를 자유롭게 논할 수가 없어 그만두었고 현재의 ChatGPT를 비롯한 LLM이 펼쳐질 미래에 대한 우려를 밝히고 있다. 이 오랜 연결주의자인 그의 인터뷰는 그의 제자들이 이 분야의 거대 테크기업들(얀 르쿤, 앤드류 응, 요슈아 벤지오, 일리야 서츠커버)과 학계를 주도하는 상황에서 상당한 정보에 기반하고 있다고 볼 수 있으므로 리뷰해볼 가치가 있다고 생각한다.

 

https://www.technologyreview.com/2023/05/02/1072528/geoffrey-hinton-google-why-scared-ai/

 

 

“My father was a biologist, so I was thinking in biological terms,” says Hinton. “And symbolic reasoning is clearly not at the core of biological intelligence.“Crows can solve puzzles, and they don’t have language. They’re not doing it by storing strings of symbols and manipulating them. They’re doing it..

  신경망의 주요 학습 알고리즘인 Back Propagation('1980년대)을 만드는데 크게 공헌한 그는 생물학자였던 아버지의 영향으로 신경망으로 지능의 문제를 해결할 수 있다고 믿어왔다고 한다. 연결주의가 침체되고 기호주의가 팽배하던 시절을 겪었음에도 그 믿음을 계속 밀고 나갔던 것이다.

 

“Our brains have 100 trillion connections,” says Hinton. “Large language models have up to half a trillion, a trillion at most. Yet GPT-4 knows hundreds of times more than any one person does. So maybe it’s actually got a much better learning algorithm than us.”

 

 ChatGPT에 대해 놀라운 것은 인간 신경망 연결의 많아야 1% 밖에 되지 않는 데도 한명의 인간보다 훨씬 더 많은 것을 알고 있다는 점이다. 오히려 인공 신경망 알고리즘이 인간의 것보다 더 효율적일 수 있단다.

 

Hinton has an answer for that too: bullshitting is a feature, not a bug. “People always confabulate,” he says. Half-truths and misremembered details are hallmarks of human conversation: “Confabulation is a signature of human memory. These models are doing something just like people.”

 

 Hallucination(엉터리 사실을 말하는것)에 대해서는 흥미롭게도 그것은 LLM만의 문제가 아니라 인간도 같다고 주장한다. 사람들도 언제나 지어내며 LLM보다 정확하거나 덜 정확할 뿐이지, 인간이나 기계나 현상은 비슷하다는 말이다. 즉 개선하면 될 일이지 구조적인 한계로 볼 수가 없다고 할 수 있다.

 

Learning is just the first string of Hinton’s argument. The second is communicating. “If you or I learn something and want to transfer that knowledge to someone else, we can’t just send them a copy,” he says. “But I can have 10,000 neural networks, each having their own experiences, and any of them can share what they learn instantly. That’s a huge difference. It’s as if there were 10,000 of us, and as soon as one person learns something, all of us know it.”

 힌튼 교수가 이제 AI에 대해 걱정되는 점들을 언급한다. 처음에는 인간에 비해 빠른 학습 및 전파에 대한 것이다. 기계는 일단 학습을 하면 복제가 매우 쉽다. 이를 테면 만 개의 agent가 있다면 1 개의 agent가 배운 내용을 그 즉시 전체로 전파할 수 있다. 인간과는 상대도 안되는 속도다. 생물학적인 뇌와는 차원이 다른 더 나은 지능이라고 평가하고 있다.

 

“Look, here’s one way it could all go wrong,” he says. “We know that a lot of the people who want to use these tools are bad actors like Putin or DeSantis. They want to use them for winning wars or manipulating electorates.”

 

 사람마다 이 문제를 바라보는 정도가 다르지만, 이 기술에 준비가 안된 사람들이 피해를 볼 수 있고, 가장 직접적으로는 나쁜 사람들에 의해 악용되어 선거나 전쟁의 양상을 바꾸는 데도 응용될 수 있다고 경고한다. 확실히 댓글부대라던가 여론조작, 다양한 조작이나 포장이 더 저렴해지고 효과적이게 할 수 있게 된 것은 사실이다.

 

Don’t think for a moment that Putin wouldn’t make hyper-intelligent robots with the goal of killing Ukrainians,” he says. “He wouldn’t hesitate. And if you want them to be good at it, you don’t want to micromanage them—you want them to figure out how to do it.”

 

이어서는 이 AI에게 자율적으로 특정 나쁜 목적을 부여하여 다양하게 고민하고 실행토록 하는 것을 예로든다. ChatGPT류가 인간의 일반적인 질문에도 답해주지만 나쁜 목적의 질문에도 지속 효과적인 답변을 해주고, agent로도 쓰일 수 있으므로 그것에 실제 실행할 수 있는 능력을 부여했을때, 상상 이상으로 잘 실행해버리면 인류가 재앙의 상황에 닥칠 수 있다는 이야기다. AI가 인간보다 더 나은 솔루션을 저렴하게 제시하고 그것을 자율 실행하게 되면, 나쁜 짓도 훨씬더 효과적으로 실행할 수 있다는 추측이다. 이미 Auto-GPT같은 AI모델들을 결합하여 특정 목적을 수행하게 자동화하는 프로젝트도 존재하고 있긴 하다. 하지만 개인적으로는 이것이 현실화되려면 꽤 충분히 더 지금의 인공AI들이 더 좋아져야 할 것이다. 단순히 LLM만으로 해낼 수 있는 문제인지도 명확치 않다. 아마 이런 부분에 있어서 여전히 전문가들의 의견이 엇갈리고 있을테다.

 

“There is no question that machines will become smarter than humans—in all domains in which humans are smart—in the future,” says LeCun. “It’s a question of when and how, not a question of if.”

 

하지만 AI가 인간보다 더 잘할 있는가에 대해서는 르쿤(얀 르쿤)의 말을 인용한다. 여하튼 언젠가는 좋아지므로 그저 타이밍의 문제라는 말이다. 다만 르쿤은 이렇게 AI가 인간보다 더 똑똑해진다고 무조건 인간을 지배한다는 점에서는 동의하지 않는다고 한다. 이미 인간 세상에서도 가장 똑똑한 사람이 다스리는 것은 아니기 때문이다. 그곳에는 무언가 다른 메카니즘이 있다.

 

He thinks the international ban on chemical weapons might be one model of how to go about curbing the development and use of dangerous AI. “It wasn’t foolproof, but on the whole people don’t use chemical weapons,” he says.

 

힌튼은 그럼에도 이 악용되고 위험해질 수 있는 AI 기술에 대해 화학무기처럼 다룰 수 있다고 이야기한다. 그러나 그 제자들 등 모두는 이런 법적이거나 행정적인 조치들보다도 AI의 기술 발전속도가 너무 빠른 것에 대해 우려하고 있다. 테크기업들의 경쟁이 심화되고 있기 때문이다.

 

아직 그 위험한 총기 문제에도 합의가 없는 미국의 예로 들면서 시간이 지나면서도 통제하기 어려울 수도 있는 상황에 대해 우려하면서 인터뷰는 끝난다. 여전히 개인적으로는 다수의 디지털 앵무새가 무기화되는 장면이 선뜻 떠오르지는 않는다. 그리고 ChatGPT는 진짜 자기가 무슨 말을 하는지 아는 독립된 생명체 같지는 않지 않은가? 하지만 확실히 기존에 사람밖에 할 수 없다고 알려진 일들을 매우 빠르고 값싸게 수행하면서 더 빨리 배울 수 있는 점은, 어떤 상상력과 결합했을때 그 파급효과가 클 수도 있다는 우려에 대해서는 이제 일부 동감이 된다. ChatGPT오픈 후 이렇게 급속히 변하고 발전하는 이 분야의 올해나 내년은 또 어떻게 진행될까?

 

'

 

 

 

 

 

반응형
Posted by 작동미학
자연철학2023. 4. 15. 10:33

 사람은 늘 예측을 하면서 살아간다. 길을 걷거나 뛰어갈 때, 계단을 오르내릴 때, 인지 못하는 사이에 이런 일이 벌어진다. 예측하고 행동하는 일을 반복함으로써 넘어져서 다치는 일을 피할 수 있다. 먹을 것을 찾고, 위험을 회피하기 위해서, 경쟁하고 우위를 차지하기 위해 인간은 끊임없이 예측해야 했다. 그래서 진화에서 주변을 지각하여 대응하는 이 지능이라는 기능의 가장 큰 기여는이러한 예측이라고 생각한다.

 

 하지만 이러한 예측은 인간 생애에 한정되어 일어난다. 우리는 100년 남짓의 지구에서의 생활에 최적화되어 예측을 행한다. 그러나 근대를 지나서 집단 지성을 통해 드디어 인간은 이 시간과 공간의 제약 범위를 뛰어넘기 시작했고, 뉴튼은 이러한 기념비적인 정확한 예측 작업의 체계적인 첫 시작을 한 것으로 평가받게 되었다. 천체의 움직임을 중력이라는 원리로 인해 수학적으로 기술함으로써 이제 행성의 위치를 매우 정확하게 예측할 수 있게 된 것이다.

 

 수학은 이렇게 인간의 지각을 넘어서는 분야에서 예측의 중요한 도구가 되었고, 지금도 마찬가지다. 인간은 오감으로 느껴지는 일부분 외에는 소위 "직관적으로" 혹은 "본능적으로" 예측하기 어렵다. 너무 작은 세계이거나 너무 느리거나 빠른 세계의 현상들도 마찬가지다. 이런 분야에 대해서는 뇌가 곧바로 대응하지 못한다. 뇌에 축적된 경험이나 반응은 인간에게 익숙한 현상들에 집중되어 있다. 인간은 양자의 세계를 온전히 편안하게 이해할 수 없다. 보이지도 들리지도 않기 때문이다. 그래서 더 평범하게는, 보이지 않는다는 이유로 엄연히 잘 느끼는 온도를 제대로 이해하는데 그토록 오랜 시간이 걸렸고, 그 체계를 잘 몰랐던 일식이나 월식도 마찬가지였다. 전체적으로 어떤 모습의 인과속에서 작동하는지는 눈에 전체가 제대로 보이지 않으면 이해할 수 없었다.

 

 우주의 기원같은 문제도 마찬가지다. 지구의 역사도 그렇다. 애초에 그런 것들은 인간이 평소 보유한 경험이나 그 상상에도 대부분 어긋난다. 그런 것들이 교육을 통해 편안한 마음으로 머리 속에 자리잡도록 기대하는 것 자체가 이 문제의 난이도를 과소 평가하는 셈이다. 어떤 인간도 편안하게 이런 세계를 받아들이기 어렵다. 인류가 그것을 수학적으로 기술하는 데는 어느 정도 성공했지만, 아주 어렸을 적에 그것들을 배운다 하더라도 마음으로 이해하기는 어렵다. 우리의 뇌는 그런 것들을 받아들이도록 진화되거나 훈련되어 있지 못하다. 그저 수학이라는 도구 혹은 기계를 통해서 바라보고 예측해낼 수 있을 뿐이다. 

 

 이 문제에 있어서 오늘 다뤄보고 싶은 것은 우주의 역사에 대한 부분이다. 반복해보자면, 우주의 역사를 제대로 이해하는 것의 시작은, 우선 그것이 지구에 살아가는 동물로서의 일반적인 이해력으로 따라가기 어렵다는 것을 인지하는 것이라고 생각한다. 우주의 역사 같은 것은 우리가 살아오면서 축적한 경험과 지식과는 그 양상이 다르다. 대략은 어찌어찌 그렇게 받아들인다고 쳐도 그 현상을 자세히 예측할 수 있는 정도는 아니다. 그저 남이 예측한 것을 그때그때 외울 수 있을 뿐이다. 수학적인 접근이 없다면 그래서 각 상황별로 정확히 계산해서 예측하기도 어렵다. 공을 던지는 것을 몇번 바라보고 그 공을 잡을 수 있게 되는 것은, 중력을 온몸으로 이해하고 있는 이 지구라는 공간 정도 뿐이다. 양자의 세계에서나 우주의 시간에서 몇번 바라보고 공을 잡아내는 계산을 할 수 있는 논리회로가 뇌 속에는 존재하지 않는다. 따라서 먼저 이 사실을 마음깊이 이해해야만 우리는 우리가 보지 않았던 것들을 예측하는 첫 걸음을 내딛을 수 있다.

 

 그리하여 자연을 연구한 이들은 자신의 본성보다는 여러가지 상상력 속에서 수학에 더 깊이 몰입해 이 도구를 신봉하게 된다. 이 계산의 틀만이 대칭과 보존을 이루는 것으로 믿어지는 자연을, 놀라운 스케일과 다양한 조건 속에서 예측해낼 수 있다. 적절한 가정을 통해 계산하여 관측 결과와 들어맞으면 우리는 이 방정식을 통해, 우리가 직관적으로 받아들일 수 없는 자연을 구체화하고 드디어 예측할 수 있게 되는 것이다.

 

 이러한 무수한 노력에 따라 인간이 우주에 대해서 하고 있는 현재의 예측은 다음과 같다. 엄청난 시간 속에 우리의 미래는, 영원한 팽창과 멀어짐 속의 소멸로 간다. 그러나 이 사건을 운석 충돌로 인한 공룡의 멸망과 같이 놓고 볼 필요는 없다. 그것은 인간에게는 너무 느린 속도로 진행 되고 있기 때문에 티끌만큼도 걱정할 대상이 아니다. 인간의 본능적인 소멸에 대한 이해와 수학적으로 예측한 우주의 소멸에 대한 이해가 달라야 하는 이유 중 하나다. 인간이 경험한 어떠한 재앙스러운 소멸도 이 계산의 결과를 이해하는 일에 쓰이기에는 부적당하다. 그것은 전혀 다른 것이기 때문이다. 

 

https://www.youtube.com/watch?v=uD4izuDMUQA 

 

 이렇게 내가 경험하기 어려운 공간과 시간을 예측하기를 원하는 이는, 그것이 인간의 본성과는 괴리됨을 이해하고 그리고 그것이 수학이라는 도구에 의존한다는 사실을 먼저 인지하는 것이 좋다. 그래서 수학 체계에 대한 여러가지 이해의 시도가 그나마 인간을 이러한 경험하지 못한 세계로의 이해로 안내할 것이라고 말하고 싶다.

 

 여기서 가장 집중해야할, 그나마 인간이 인지하기 어려운 자연을 이해할 수학 체계의 본성에 대한 이해가 무엇을까? 바로 대칭과 보존, 무한과 임의성 같은 주제라고 나는 생각한다. 몇가지 과거의 경험과 상상이면 이러한 대칭이나 보존 같은 정도는 내 본능으로도 이해할 수 있다. 우리는 늘 시각에서 대칭을 잘 찾아내고 아름다워 하지 않는가? 그리고 이것들에 대한 기술은 이미 몇 편의 이 블로그 글에서 진행했는데, 과연 이것으로 어떻게 우주를 상상하고 예측해 볼 수 있다는 말일까?

(신비롭게도 아직 우주에는 대칭이나 보존이 깨졌다는 명백한 증거를 발견한 적이 없고 반대로 그것이 지켜진다는 증거는 도처에 존재한다.)

 

 첫번째는 우주에는 무한의 시간 속에 모든 일이 발생할 수 있다는 사실이다. 심지어 그 각각의 모든 일이 무한번 발생하게 된다. 우연히 물감을 엎질렀는데 모나리자가 그려질 확률은 0에 가깝지만, 무한의 세상에서는 무한번의 모나리자가 그려진다. 그리고 흥미롭게도 이러한 통찰은 생명의 탄생이나 여러가지를 설명해 줄 수 있다. 우리는 그 무한의 어딘가 한 순간을 살아가고 있다. 인류가 거의 무한번 나타난다고 해도 이상한 논리라고 생각하지 않는다. 확률이 희박한 것은 무한에서는 문제가 되지 않는다. 무한에서는 일어날 수 있는 것은 모두 무한번 일어난다. 이런 점에서 우주가 탄생하고 영원히 나이먹는 과정 정도만 밝혀진 상황에서도, 우주의 탄생이 단 한번의 유일한 것으로만 보기는 어렵다. 그것은 두번째 사실에 근거한다.

 

 두번째는 우리가 담고 있는 세계가 보여주는 대칭과 보존이다. 미시세계의 불확실성에도 불구하고 대칭과 보존은 깨어지지 않는다. 사람이 시각으로도 이해할 수 있는 이 대칭은 무언가 기억하지 않고 균형을 이룰 수 있는 유일한 방법이다. 단순한 수학적 전개가 이루는 기본 틀이다. 우주가 어떻게 태어나고 팽창하던 그것은 무한의 반복 속에서 대칭과 보존을 지켜야 하는 것으로 보인다. 그래서 이런 사실만으로도 다중 우주에 대한 주장이 곧바로 지지받게 된다. 만약에 우리가 사는 우주가 어떤 닫힌 무엇인가라면 합쳐서 0이 되는 반대의 무엇인가가 존재해야 한다. 그리고 그것이 한번 생긴 것이라면, 단독으로 생길리 만무하다. 그것은 보존 속에 무한번 다양하게 생겨야 한다. 대칭으로 태어나 무한번 반복되어야 한다.

 

 한가지 재미있는 것은 그런 면에서는 양자역학으로 증명된, 세계가 이산적(discrete)이라는 해석은 당혹스럽기는 하다. 왜 그런 끊김이 존재하는가. 그런 끊김이 대칭과 보존에 어떠한 영향을 미치는가. 그리고 왜 하필이면 그 scale에서(플랑크 상수) 끊기는가. 그것은 계속 상위와 하위에서 반복되는가?

 

 이런 기본적인 상상들이 이 분야에 대해, 그나마 인간의 이성으로 도전할 수 있는 부분이 아닐까? 계산하기 전에 수학이 가진 여러가지 틀 관점에서 바라보는 그런 방법이 아닐까?

 

 

 

 

 

반응형
Posted by 작동미학
머신러닝AI2023. 4. 2. 19:08

많은 사람들이 ChatGPT 질의를 위해 OpenAI 사이트에 접속해서 사용한다. 해당 웹 화면에 그대로 접속해 활용하는 방법이다. 그런데 OpenAI는 이러한 직접적인 웹서비스 외에도, 별도로 개발해서 사용할 수 있는 API를 지원한다.

 

 게다가, 이 API 사용방법은 개발자에게는 매우 쉽고 몇가지 장점이 있는데, 유료 사용을 염두해두면 특히 더 그렇다. API 1회 사용에 $0.01이면 ChatGPT Plus라는 $20짜리 정액 요금제에 비해, 2천문장을 물어봐야 한달에 간신히 $20을 쓸 수 있는 종량제 형태의 사용이 가능하다. 그리고 이 API 사용시 처음 $18은 무료이기도 하다. 이 무료도 개인은 다 쓰기가 쉽지 않다.

 

 그러면 직접 한번 사용해보자. S/W 개발 경험이 있는 사람을 가정해보았다.

 

0) 우선 OpenAI의 API를 사용하기 위해서는 API key를 받아야 한다.

 

 API Key는 일종의 API사용 인증암호 같은 것이라고 생각하면 된다. OpenAI에 가입했다면 이미 준비가 거의 끝난 셈이고, API Key생성 버튼(Create new secret key 버튼)을 누르면 곧바로 알 수 있다. openai.com에 로그인이 되었다면 https://platform.openai.com 에 접속하여 아래 화면처럼 API 생성을 해보자.

 

 

Create new secret key를 누르면 secret key가 생성된다. 생성시 별도로 잘 기록해 숨겨둔다.

 

위 화면의 SECRET KEY 에 "sk-...NCss"로 표기된 것에 실제로는 더 많은 알파벳(?)들이 숨겨져 있는 긴 문자열이다. 참고로 위 왼쪽 메뉴에서 'Usage'를 누르면 지금까지 API를 호출한 사용량을 알 수 있다. $18의 무료 사용이 끝나면 유료로 넘어가게 된다.

 

1) API를 python을 호출해서 사용해보자.

 

https://medium.com/nerd-for-tech/create-ai-application-in-minutes-with-openai-api-5e84bd3ec5d0 에 간단하게 잘 설명되어 있다. python을 쓸 수 있는 환경 하에서

 

$ pip install openai 해서 설치한 후

 

아래 python code를 실행한다. 세부 옵션들은 여기서는 설명을 생략한다.

 

import os
import openai
import config
openai.api_key = "위 얻어낸 SECRET KEY를 넣는다"
response = openai.Completion.create(
engine="davinci",
prompt="Blog topics dealing with daily life living on Mars\n\n1.",
temperature=0.3,
max_tokens=64,
top_p=1,
frequency_penalty=0.5,
presence_penalty=0)
print(response)

 

여기 나오는 설정 변수들을 간단히 설명해보면 아래와 같으니 참조하면 된다. 실제로는 각 값 간에 영향을 주는 부분이 있어서 시행착오 속에 값을 결정하게 된다고 한다.

 

ㅇmax_tokens

  최대 생성 토큰 길이로 GPT3의 경우 2048 까지 잡을 수 있다. 모델마다 최대 토큰 값은 차이가 있다.

 

ㅇtemperature

  문장의 임의성을 조절하는 변수로 0으로 갈수록 답변이 정형화되고 고정되며, 1로 갈수록 창의력이 높아지고 임의적이 된다.

 

ㅇtop_p

  해당 변수는 통상 확률값으로 커지면 커질수록 더 많은 후보 토큰 중에 랜덤하게 고르게 된다. 따라서 temperature와 유사하게 작동되는데, temperature를 지정하여 사용하는 경우 이 값은 1로 설정해서 사용하도록 추천하고 있다

(즉 temperature나 top_p중 하나만 1보다 작은 값을 설정하고, 나머지는 1로 설정하여 중립화시킨다)

 

ㅇfrequency_penalty

  이미 생성시에 사용한 단어들이 자주 출현함에 따른 신규 사용 확률을 조절한다. 높은 값일수록 사용확률을 낮춘다.

 

ㅇpresence_penalty

  생성시에 사용한 단어의 출현을 조절한다. frequency는 사용 빈도수에 의해 조절됨에 반해 presence는 기사용 여부에 의해 조절된다.

 

 

 

2) 아예 ChatGPT 챗봇 사이트를 만들어 보자.

 

서버 환경을 갖춘 개발자라면 아예 오픈소스를 통해 OpenAI와 동일한 웹사이트 환경을 자체 운영할 수 있다. 즉 위 API를 python으로 쉘에서 실행하는 것이 아니라, 나만의 사이트를 통해 위 가성비 좋은 API를 경유해서 ChatGPT를 사용하는 것이다. 물론 요즘에는 많은 회사들이 메신저나 앱에서 이러한 ChatGPT 연결 서비스를 제공하지만, 나만의 환경을 갖는 장점도 존재한다. 여러가지 실험이나 ChatGPT 상위 버전 사용 등 API를 직접 연결하면 다양한 것들을 경험할 수 있다.

 

Linux ubuntu 환경이라면 docker를 통해 아래 서비스가 가능하다.

https://github.com/mckaywrigley/chatbot-ui

 

mckaywrigley의 chatbot 오픈소스 (node.js/docker 기반)

  A. 여기서는 linux ubuntu 20.04 에서 docker를 설치해서 테스트 해보았다. port 3000번을 docker의 내부 3000번 포트로 연결하기 때문에, 외부에 3000번을 열어줄 필요가 있다.

 

  - docker, node.js, npm을 설치한다.

  - 아래 git을 clone하여 docker image를 build하고 실행한다

  

   $ cd /work/

   $ git clone https://github.com/mckaywrigley/chatbot-ui

   $ cd chatbot-ui

   $ docker build -t chatgpt-ui .                  #도커 이미지를 만든다
   $ docker run -e OPENAI_API_KEY=xxxxxxxx -p 3000:3000 chatgpt-ui

 

  B. http://대상서버IP:3000/ 으로 접속한다

 

생각보다 손쉽게 OpenAI의 API를 활용할 수 있다. 시간이 지날수록 이 OpenAI의 API KEY를 통해 다양하게 연결할 수 있는 더 많은 오픈소스와 플러그인이 나올것이라 예상된다. 오늘은 일단 여기까지 한번 확인해 보았다.

 

반응형
Posted by 작동미학
순수수학2023. 4. 2. 18:33

 책 "허수(Imagaing numbers)"를 쓴 배리 마주르(Barry Mazur)가 지적했듯이, 음수와 음수를 곱하면 양수가 나오는 것은 의외로 어린 학생들에게 설명하기가 어렵다. 그것은 6개가 든 사과 봉지가 2개가 있을때 전체가 12개가 된다는 6*2=12가 굉장히 자명한 것과는 차이를 보인다. -6을 두번 곱하면 -12가 되는 것도 그렇다 치자. 그런데 왜 -1과 -1을 곱하면 1이 되는가?

 

 정답은 수학 연산체계가 즉 교환법칙이나 결합법칙 등 여러가지 면에서 모순적이지 않기 위해서는 그것이 양수가 되어야 한다는 점이다. 

 

 (-1) * 0 = 0

 (-1) * (-1 + 1) = 0

 (-1)*(-1) + (-1 * 1 ) = 0

 (-1)*(-1) + (-1) = 0

(-1)*(-1) = 1

 

 그런데, 이 설명은 좀 납득하기 어려운 점이 있다. 앞서 6개가 든 사과 봉지가 2개가 있으면 12개가 되듯이, 눈으로 보이는 직관적인 설명을 하기가 어렵기 때문이다.

 

 이런 문제는 수학에서 드물지 않다. 논리적으로는 그러하다는 것을 따라가보면 맞는데, 직관적으로 마음에 와닿지 않는다. 그래서 이 음수에 대한 질문이 가치있는 이유는 이러한 아주 단순해보이며 수학적으로 자명한 진실이 왜 설명하기 어려운지를 우리가 생각해보아야 한다는 점이다. 예를 들면 허수라는 것은 존재하지도 않는데 대체 무엇이고 sqrt(2)="루트2"는 왜 피타고라스 학파가 존재하지 않는 수라며 비밀로 했을까?

 

 이 "설명 난해함"에는 중요한 함의가 숨어있는데, 바로 수학적 체계와 인간 인지의 차이에 대한 내용이다. 그 간격을 이해하면 이 난해함이 자명해지는 것을 알 수 있다.

 

 인간의 인지는 기본적으로 태양계의 지구라는 곳에서 생존하기 위해 진화한 지능에 근거한다. 자연계의 생존 경쟁을 위해서 머리를 써서 예측해야했고, 가끔은 중력의 포물선이 머리속에 들어있는 것이 아닌가 할 정도로 우아하게 멀리서 날아오는 공을 잡아낸다.

 

 반면에 수학은 대칭과 보존, 변화 등이 얽혀 있는 논리 체계이다. 그것은 일반화, 무모순 여러가지 것들을 필요로 하며 -1 과 -1 이 곱하면 당연히 1이 되는 체계이다.

 

 그래서 인간의 인지 체계와 수학의 대칭체계는 일부 부조화한다. 이를테면 양수 곱은 이해할 수 있지만 음수 곱은 어렵다. 만약에 인간이 수학의 논리체계가 모두 극명히 드러나는 환경에서 진화했다면 수학 전체가 이렇게 어렵지 않을 것이다. 그것은 마치 인간이 미시세계에서 살아왔더라면, 그 알 수 없는 양자역학을 던지는 공의 움직임을 쉽게 이해할 수 있는 것처럼 깨달을 수 있을 것이라는 기대와 비슷하다. 그러나 인간은 거시세계의 동물이며 거기서 진화한 생명체이다. 이 세상이 수학적이라고 필자는 믿지만, 인간이 처한 환경은 그러한 수학의 일부분만을 경험할 뿐이다. 그것은 전체 수학의 모습과는 괴리가 있다. 그리고 이러한 괴리는 서로가 자명한 상황에서도 "설명 난해함"을 만들어 낸다.

 

 오히려 이런 관점에서는 인간이 수학을 만들어 내고, 완성해온 과정이 놀랍다. 인간이 가진 인지와 수학 체계의 어긋남을 이겨내기 위해, 여러가지를 상상하고 논리적으로 다시 시도해봄으로써 인간은 한단계 한단계 이 거대한 수학체계를 발전시켰다. 자신이 이해할 수 없는 것도 가정하며 앞뒤의 퍼즐을 맞추자, 듣도 보도 못한 '허수'가 탄생했으며, 그것이 원래 이 수학 체계안에 존재하는 것이라는 것을 깨닫는 것도 그러한 역사의 일환이다. 그렇게 자신의 인지 경험과 어울리지 않는 이 수학의 논리 체계를 어렵게 어렵게 확장해 받아들이고 있다고 볼 수 있다.

 

 여기서 재미있게도, 수학자라는 직업을 가진 이는 일반인 대비 수학 체계에 대해서 더 잘 이해하고 받아들인다. 방정식을 보면 마치 눈에 빤히 보이는 물고기의 움직임처럼, 일반인이 전혀 알아내지 못하는 것을 바로 집어낸다. 그래서 이 아름다운 대칭 체계를 머리 속에 일반 사람보다 더 잘 그리면서 이해하고 그것을 직업으로 선택한 사람들을 우리는 수학자라고 부른다. 그러나 그럼에도 불구하고 인간이 가진 깊은 인지 체계와 논리 체계의 수학 사이에는 어쩔 수 없는 괴리가 존재한다. 그것이 더 빠르게 이 분야가 발전되지 못한 이유이며, 상상 외에는 탈출구가 없었던 이유다.

 

 이런 관점에서 수학의 궁극적으로 완성된 체계는 무엇일까? 만약에 우리가 수학에 완전히 익숙해진 지능을 갖고 태어났다면, 음수와 음수를 곱하면 양수가 된다는 사실이 마치 숨을 쉬는 것처럼 자연스럽게 느껴지는 지능을 부여받았다면 우리는 어디까지 완성해낼 수 있을까? 그 지향점은 어떻게 될까? 지금까지 다양한 상상으로 한걸음 한걸음 진화시켜왔고, 완전히 새로운 수학 분야를 열어가며 앞으로 나간 천재들이 그리는 방향은 무엇일까?

 

 정답을 알아서 질문하는 것은 아니다. 여기에 대답하기 위해서는 수학의 모든 일반적인 것들이 숨쉬는 것처럼 자연스러운 지능을 만나야 할텐데, 계속 우리는 훈련에 의해서 그러한 이들을 만나게 되고 있는 것인지 모르겠다. 대칭과 보존의 체계 속에서 그것들을 일반화하고 더 쉽게 개념화하는, 더 많은 것을 더 단순하게 설명하는 이들이 그들이며 그 방향이다. 인간의 인지 체계를 조금더 수학적인 것에 적응하려고 노력하고, 지속적으로 위 방향을 추구하는 이들이 더 큰 답을 찾아나가지 않을까? 인간의 인지와 수학 체계의 괴리가 무엇인지 더 잘 이해하고, 수학 체계가 지는 방향에 맞추어 더 끊임없이 일반화해나가는 노력만이 이 분야를 확장할 수 있지 않을까. 어찌보면 당연한 이야기지만 한번쯤은 곱씹어볼 일이다.

 

 

 

 

반응형
Posted by 작동미학