머신러닝AI2023. 9. 2. 20:15

생성형 이미지의 대표주자인 Stable Diffusion을 설치해서 실행해보자. 많은 것들이 그간 발전했고 easy diffusion이라는 멋진 웹인터페이스까지 만들어진 오픈소스가 존재한다.

 

모든 기본 환경은 ubuntu nvidia 4080 + anaconda 를 기준으로 한다 (  https://infoengineer.tistory.com/96 )

아래 사이트를 참조하자.

 

https://easydiffusion.github.io/docs/installation/

 

$ wget https://github.com/cmdr2/stable-diffusion-ui/releases/latest/download/Easy-Diffusion-Linux.zip

$ unzip Easy-Diffusion-Linux.zip

$ cd easy-diffusion

$ ./start.sh

/work/anaconda3/bin/curl
/usr/bin/tar
/work/anaconda3/bin/bzip2
Downloading micromamba from https://micro.mamba.pm/api/micromamba/linux-64/latest to /work2/easy-diffusion/installer_files/mamba/micromamba
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
100  4569    0  4569    0     0   1176      0 --:--:--  0:00:03 --:--:-- 4461k
  0 5096k    0     0    0     0      0      0 --:--:--  0:00:04 --:--:--     0bin/micromamba
100 5096k  100 5096k    0     0   811k      0  0:00:06  0:00:06 --:--:-- 3183k
Micromamba version:
1.5.0
Empty environment created at prefix: /work/easy-diffusion/installer_files/env
Packages to install: conda python=3.8.5
conda-forge/linux-64                                30.0MB @  41.3MB/s  0.7s
conda-forge/noarch                                  12.2MB @   3.5MB/s  3.5s

....

 

 

자동으로 서버가 뜬다. 내부 리눅스 브라우저를 이용해 아래를 실행한다.

 

http://localhost:9000/

 

적절한 영문 문구로 이미지 생성됨을 확인한다.

512*512 이미지가 수초만에 생성됨을 알 수 있었다. CPU/GPU 모드 등 변경하여 실험할 수 있다. 4080 GPU 카드로는 1280*768 정도 이미지를 만들 수 있는데, 1920*1280은 메모리 부족으로 오류가 난다.

 

 

이렇게 디폴트로 사용하는 방법도 있지만 custom model을 다운로드 받아 사용하는 방법도 있다. civit.ai 같은 사이트에서 model 파일을 다운로드 받아서 ./easy_diffusion/models/stable-diffusion/에 넣은 후 아래와 같이 특화된 이미지를 생성할 수도 있다.

 

stable diffusion model 다운로드 사이트(civit.ai), Models선택

 

Download를 선택하면 크기는 좀 크지만, 커스텀 모델 파일을 다운로드할 수 있다

 

왼쪽 메뉴의 Image Settings의 Model을 바꾸어서 생성해보면, 특화 모델 기반의 이미지 생성도 가능하다.

 

 

easy-diffusion외에 Stable Diffusion의 대명사인 AUTOMATIC1111이라는 웹인터페이스도 존재한다. 이 프로그램의 특징은 최신 기능의 빠른 적용이다. 이 툴을 설치하는 방법에 대해서도 잠깐 살펴보자.

 

$ conda create -n automatic python=3.10

$ conda activate automatic

$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

$ cd stable-diffusion-webui/

$ ./webui.sh

################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################
....

#모델다운로드 등 거치게 된다

#

 

모두 실행된 후 http://127.0.0.1:7861/ 에 접속하면 아래와 같이 AUTOMATIC1111이 구동된다. 시중의 메뉴얼을 참조하여 활용해보자. img2img 같은 기능은 이미지를 넣어 다른 이미지를 변환하는 기능이다. 그외에 Extras같은 플러그인 등 다채로운 기능을 제공한다. 이를 테면 Extensions에 https://github.com/toriato/stable-diffusion-webui-wd14-tagger 를 설치하면, 사진에서 스크립트를 뽑아주는 반대의 기능 활용도 가능하다.

Automatic1111 화면

 

반응형
Posted by 작동미학
머신러닝AI2023. 8. 31. 23:59

GPU를 쓰는 이 녀석의 특성에 따라 이 글은 앞의 https://infoengineer.tistory.com/96 를 계승한다. GPU에 맞게 설정을 끝냈다고 가정한다.

 

meta에서 텍스트와 음성 모두를 읽어서 번역하고 텍스트화하는 성능 좋은 모델을 발표했다. meta의 sequence 처리 모델인 faitseq2를 먼저 설치한 후 SeamlessM4T를 통해 아래 5개의 기능을 우리가 아는 거의 모든 언어간이 가능하다. 한글도 포함되어 있다! 그리고 무려 speech to speech 번역도 가능하다. 여기서는 우선 가장 단순 T2TT(텍스트 번역)을 해보자.

 

  • Speech-to-speech translation (S2ST)
  • Speech-to-text translation (S2TT)
  • Text-to-speech translation (T2ST)
  • Text-to-text translation (T2TT)
  • Automatic speech recognition (ASR)

설치 실행은 매우 단순하다. Anaconda를 사용해 보자.

 

$ conda create -n fairseq2 python=3.10
$ conda activate fairseq2
$ pip install fairseq2
$ git clone https://github.com/facebookresearch/seamless_communication
$ cd seamless_communication/
$ pip install .
$ sudo apt install libsndfile1
$ conda install -y -c conda-forge libsndfile

 

$ m4t_predict "The wind blows always to the west, and the girl is waiting always on the beach" t2tt kor --src_lang eng

2023-08-31 23:49:20,161 INFO -- m4t_scripts.predict.predict: Running inference on the GPU in torch.float16.
Using the cached checkpoint of the model 'seamlessM4T_large'. Set `force=True` to download again.
Using the cached tokenizer of the model 'seamlessM4T_large'. Set `force=True` to download again.
Using the cached checkpoint of the model 'vocoder_36langs'. Set `force=True` to download again.
2023-08-31 23:49:26,134 INFO -- m4t_scripts.predict.predict: Translated text in kor: 바람은 항상 서쪽으로 불고, 소녀는 항상 해변에서 기다리고 있습니다

 

$ m4t_predict "We introduce SONAR, a new multilingual and multimodal fixed-size sentence embedding space, with a full suite of speech and text encoders and decoders. It substantially outperforms existing sentence embeddings such as LASER3 and LabSE on the xsim and xsim++ multilingual similarity search tasks." t2tt kor --src_lang eng

2023-09-01 00:02:20,217 INFO -- m4t_scripts.predict.predict: Running inference on the GPU in torch.float16.
Using the cached checkpoint of the model 'seamlessM4T_large'. Set `force=True` to download again.
Using the cached tokenizer of the model 'seamlessM4T_large'. Set `force=True` to download again.
Using the cached checkpoint of the model 'vocoder_36langs'. Set `force=True` to download again.
2023-09-01 00:02:26,722 INFO -- m4t_scripts.predict.predict: Translated text in kor: 우리는 SONAR를 소개합니다. 새로운 다국어 및 멀티모달 고정 크기의 문장  ⁇ 입 공간으로, 음성 및 텍스트 인코더 및 디코더의 전체 스위트를 갖추고 있습니다. 그것은 xsim 및 xsim++ 다국어 유사성 검색 작업에서 LASER3 및 LabSE와 같은 기존 문장  ⁇ 입을 크게 능가합니다.

 

속도가 NVidia 4080 GPU에서 약 7초가 소요되는데, 모델로딩 시간을 빼면 그럭저럭 괜찮은 시간에 나오는 것 같다.

모델은 2가지가 있는데 디폴트로 SeamlessM4T-Large가 선택된다.

SeamlessM4T-Large 2.3B 🤗 Model card - checkpoint metrics
SeamlessM4T-Medium 1.2B 🤗 Model card - checkpoint metrics

GPU를 사용하면 그리 느리지 않은 좋은 라이브러리를 확보한 셈이다. 라이센스는 무료로 자유롭게 쓰면 되는(하지만 재배포는 제약이 있다) Creative Commons Attribution-NonCommercial 4.0 International Public License 를 취한다.

 

 

 

반응형
Posted by 작동미학
순수수학2023. 8. 26. 12:10

 무한은 실제할까? 이 질문에 대해서 아직 답변이 모호하다. 그러면 무한의 실제라는 것은 무엇이 왜 모호할까?

 

 무한은 수학사에서 보면 0이 탄생했을때부터 사실 같이 태어났다고 볼 수 있다. 즉 0에다가 무엇인가를 곱해서 1을 만들 수 있는 방법이 무한 뿐이기 때문이다. 1을 0으로 나누면 무한이 된다. 여러가지 관점에서 대칭 체계의 수학을, 논리를 전개해가다보면 0은 반대편에는 무한이라는 녀석이 자리잡게 되고, 수학에서 무한은 실제한다.

 

 그러면 자연은 수학과 일치하는가? 불행히도 이는 아직 합의가 이루어지지 않았다. 상당한 정도로 수학적이라고 알려져있지만, 그 근원은 아직 알 수가 없다. 환원주의로 자연을 분석해내려가고 있지만, 인간의 환원 능력은 여러가지 사정상 한계가 있고 그 한계의 가장 밑바닥에 닿을 수 있는지는 모호하다. 따라서 무한을 직접 확인하기는 어렵다.

 

 다만 지금 당장 존재하는 것 같은 무한은, 바로 미래의 시간이다. 갑자기 이 시간의 흐름이 멈출리는 없다. 이 시간은 무한히 흘러가리라고 예상된다. 에너지가 보존되고 물리법칙이 이어지는 한 그렇게 되지 않다고 의심할 이유는 아직 없는 상황이다. 오히려 에너지가 사라지고 시간이 멈출 것이라는 예측이 이상하지 않겠는가. 그러면 무한의 시간 속에서 이 우주는 어떻게 흘러갈 것인가? 평균은 알려져있는데 무한의 시간속에 발생하는 우연들에 대해서는 아직 잘 알려져 있지 않고, 이 무한의 계산방법을 통해 무한의 우주를 예측할 수 있지 않을까?

 

 정리해보면, 수학에서의 무한은 실재하지만, 자연에 무한이 존재하는지 애매한 이유는, 자연과 수학이 동치인지 아직 확인되지 않았고 확인이 어렵기 때문이다. 그러나 동치라고 생각해보면 무한을 이용해 예측할 수 있는 우주의 미래가 존재한다. 이것들이 빅뱅과 연결되면 여러가지 재미있는 예측을 할 수 있지 않을까. 모든 광자들이 우연히 다시 하나의 플랑크 공간에 나타나 다시 빅뱅이 일어나고 수많은 빅뱅과 확대가 반복되는 무한의 우주 말이다.

반응형
Posted by 작동미학
시뮬레이션가설2023. 7. 22. 11:09

 세상이 matrix인가에 대한 막연한 논의는 있지만, 그것을 심각하게 정립하기란 쉽지 않다. 왜냐하면 깨어날 수 있는 문제인지, 깨어나면 밖에 무엇이 있는지 알기 어렵기 때문이다. 게임상의 캐릭터는 깨어나서 밖으로 나갈 수도 없는게 오히려 더 일반적이기도 하다.

 

1) 지금까지 자연에 대한 관측으로 아래에 대한 내용이 확인되었다.

  a. 자연은 대칭과 보존의 법칙에 따라 과거와 현재 동일 법칙하에서 진행된다고 여겨진다.

  b. 그 정밀도와 일관성은 아직 인간의 관측 범위내에서 이상하다고 의심받지 않고 있다.

  c. 미시세계로 들어가면 이산성(discrete)이 확인되었다. 세상은 띄엄띄엄하며 bit로 처리된다.

 

2) 어떤 체계(우주)가 랜덤으로 창조된다면 어떤 모습이 일반적인가. 이를테면 우리가 만들어내는 게임들의 세상을 보면 대표적으로 이렇게 할 수 있다. 즉 1)의 세상에서 창조되는 새로운 시뮬레이션에 대한 이야기다

 

  a. 특별히 그렇게 의도하지 않으면 대칭/보존은 매우 낮은 확률로 나타나는 특성이 된다. 시간이 지나면서 랜덤으로 전개되는 것이 물리적인 제약이 없었을 때의 랜덤한 세상이다. 즉 지금 우리가 자연을 그대로 시뮬레이션하려면 할일이 너무나 많다. 엔트로피나 임의성을 들먹이지 않아도 수많은 만들어질 게임 중에 현실과 같은 것을 만든다는 것이 얼마나 도전적이라는 것을 알 수 있다.

  b. 그런데 이 과정에서 고려되어야 할 것이 이것을 고민하는 주체가 바로 현실에서의 인간이라는 점이다. 인간이 지능을 갖기 위해서는 그 기본 법칙이 갖춰져야 한다. 즉 시뮬레이션의 랜덤성을 평가함에 있어서, 그 안에 그것을 평가하는 주체가 성립하기 위해서는, 랜덤성의 범위가 자동으로 축소된다는 사실이다. 즉 사람이 생겨날 수 있을 정도의 시뮬레이션 체계가 존재해야만 그 안의 사람이 그 시뮬레이션의 특성에 대해 고민할 수 있다는 이야기다.

 c. 따라서 시뮬레이션의 임의성에 대한 고민은, 그것을 고민할 수 있는 존재가 나타날 수 있는 최소한의 시뮬레이션으로 좁혀진다. 이것은 중요한 고려사항이 된다. 만약에 우주 밖에서 시뮬레이션이 랜덤으로 선택되어 탄생되고 있다고 하더라도, 스스로가 시뮬레이션인지 고민하는 정보가 넘나드는 시뮬레이션은 상대적으로 아주 적은 수의 시뮬레이션에서만 발생하게 되기 때문이다.

 

3) 시뮬레이션 체계가 다수 존재할 수 있는가에 대한 문제

 

 a. 서로 영향이 없다고 믿어지고, 존재여부도 모호한  다른 시뮬레이션을 논의하는 것은 의미가 없지만, 가장 큰 논리는 unique함에 대한 거부감이다. 그리고 대칭과 보존이 만족되는 범위가 아직까지 어딘지에 대한 모호함이다.

 b. 다만 시뮬레이션에 대해 고민하고 해석하는 주체가 한 개인이므로, 실제로는 어떤 단위로 시뮬레이션된다고 해도 말이 된다. 나 외에 다른 모든 존재는 서로 다른 독립성 속에서 움직이지 않아야 되는 이유가 없다. 따라서 아이러니하게도 이러한 특수함이 성립되지 않는다고 애초에 가정하는 것이 더 보편성을 띌 수 있게 되고, 시뮬레이션을 바로 평가할 수 있다.

 

따라서

 

1) 시뮬레이션은 아래와 같은 범주에서 진행될 가능성이 있다.

   a. 모든 정보가 하나의 법칙을 추종하는 단일 체계로 움직이는 형태

   b. a같은 시뮬레이션들이 1개 이상 존재하여 각기 독립적인 체계로 움직이는 형태

   c. b같은 형태이면서 a들끼리 어떠한 약하고 제한적인 의존관계를 지니는 형태

   d. a/b/c가 각각 그 안에서 새로운 시뮬레이션을 만들어내는 종속관계를 나타내는 형태

 

2) 1)의 a)단위를 고려해볼때

  a. 해당 시뮬레이션이 지금처럼 대칭/보존/이산성 등에 작동할 경우가 매우 드물다고 판단할 수 있다. 해당 시뮬레이터의 생성이 의도적이거나(대표적으로는 자신의 원래 세상과 유사하게-그대로 혹은 가감하여- 창조되거나) 할 수 있겠지만 우선은 그렇다면 오히려 논의의 폭이 좁아지고, 그렇지 않다고 가정하고 여러가지를 판단하는 것이 중립적이어 보인다.

  b. 중요한 것은 그 안에 지적 존재가 나타나야만 이러한 시뮬레이션 가설을 검증할 수 있다는데 있다. 여러가지 임의성이나 확률에 대한 논의는 이렇게 시뮬레이션을 평가하는 존재가 선행해야 한다는 조건 때문에 보정이 필요하다.

 

 

가만히 고민해보면, 이러한 논의들의 현실적인 설명은, 우리가 만약에 지능이 나타날 수 있는 시뮬레이터를 만들어서 구동했을때의 상황이다. 인류가 만들 수많은 시뮬레이터 중에 지능이 나타날 수 있는 수준의 시뮬레이터가 언젠가는 탄생하게 될 것이고, 그 시뮬레이터 안에서 또 새로운 그 안에 지능이 있는 시뮬레이터가 탄생하는 과정이다. 영화 Inception같은 모습을 상상할 수 있겠다.

 

지속 이 관계들을 정립해나가보자

반응형
Posted by 작동미학
머신러닝AI2023. 7. 20. 00:53

이 글은 앞의 https://infoengineer.tistory.com/96 를 계승한다. 7월 19일 전격적으로 메타의 LLAMA v2가 공개되었고 azure, aws에도 같이 공개되었다. git 주소는 https://github.com/facebookresearch/llama 이다.

 

해당 git의 가이드를 따라가서 모델 신청을 하면( https://ai.meta.com/resources/models-and-libraries/llama-downloads/ ) 메일로 다운로드 링크가 몇시간 안에 날아온다. 해당 링크를 복사해두고 24시간 안에 다운받는다(5번 밖에 다운로드 안되니 주의를 하자)

 

그리고 주의할 것이, 해당 날아온 메일의 URL에 걸려있는 링크를 복사하면 안되고 반드시 순수 텍스트를 복사해두자. 붙여넣기 했을때 주소가 https://download... 로 시작해야 한다. 링크를 복사하면 https://l.facebook..이 복사되는데 이 주소로 처리를 했다가는 오류만 나고 다시 모델 다운로드 신청해서 작업해야 하니 주의한다.

 

여하튼 우리는 앞의 글에서 기초를 모두 닦아 두었으니(GPU/Anaconda 준비완료) 곧바로 다운로드 받아 시작하면 된다.

 

$ cd /work/llm  #아무 디렉토리나 llama 모델을 다운받을 수 있는 충분한 디스크가 있는 폴더로 간다

$ conda create -n llama2 python=3.9 -y

$ conda activate llama2

$ git clone https://github.com/facebookresearch/llama

$ cd llama

$ pip install -e .

Obtaining file:///work/llm/llama
  Preparing metadata (setup.py) ... done
Collecting torch (from llama==0.0.1)
  Using cached torch-2.0.1-cp39-cp39-manylinux1_x86_64.whl (619.9 MB)
Collecting fairscale (from llama==0.0.1)
  Using cached fairscale-0.4.13-py3-none-any.whl
Collecting fire (from llama==0.0.1)
  Using cached fire-0.5.0-py2.py3-none-any.whl
Collecting sentencepiece (from llama==0.0.1)
  Using cached sentencepiece-0.1.99-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
Collecting numpy>=1.22.0 (from fairscale->llama==0.0.1)
  Downloading numpy-1.25.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.7 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 17.7/17.7 MB 50.0 MB/s eta 0:00:00
Collecting filelock (from torch->llama==0.0.1)
  Using cached filelock-3.12.2-py3-none-any.whl (10 kB)
Collecting typing-extensions (from torch->llama==0.0.1)
  Downloading typing_extensions-4.7.1-py3-none-any.whl (33 kB)
Collecting sympy (from torch->llama==0.0.1)
  Using cached sympy-1.12-py3-none-any.whl (5.7 MB)
Collecting networkx (from torch->llama==0.0.1)
  Using cached networkx-3.1-py3-none-any.whl (2.1 MB)
Collecting jinja2 (from torch->llama==0.0.1)
  Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting nvidia-cuda-nvrtc-cu11==11.7.99 (from torch->llama==0.0.1)

...

 

$ chmod 755 download.sh

#아래 download에서는 70B-chat빼고는 다 받았는데, 70B는 다운로드 시간이 걸리므로 빼고 받아도 좋다.7B도 13Gbytes나 된다.

$ ./download.sh 

Enter the URL from email: https://download.llamameta.net/*?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc29... 

 

Enter the list of models to download without spaces (7B,13B,70B,7B-chat,13B-chat,70B-chat), or press Enter for all: 7B,13B,7B-chat,13B-chat
Downloading LICENSE and Acceptable Usage Policy
--2023-07-19 23:08:24--  https://download.llamameta.net/LICENSE?Policy=eyJTdGF0ZW1lbnQiOl...QRJLYKIFSLZ 
download.llamameta.net (download.llamameta.net) 해석 중... 18.67.51.119, 18.67.51.25, 18.67.51.64, ...
다음으로 연결 중: download.llamameta.net (download.llamameta.net)|18.67.51.119|:443... 연결했습니다.
HTTP 요청을 보냈습니다. 응답 기다리는 중... 200 OK
길이: 7020 (6.9K) [binary/octet-stream]
저장 위치: ‘./LICENSE’

./LICENSE                           100%[================================================================>]   6.86K  --.-KB/s    / 0s       

2023-07-19 23:08:24 (976 MB/s) - ‘./LICENSE’ 저장함 [7020/7020]

--2023-07-19 23:08:24--  https://download.ll...

 

#모델을 받고 나면 아래 소스의 빨간색 영역을 영어에서 한글로 고쳐보자.

$ vi example_text_completion.py 
# Copyright (c) Meta Platforms, Inc. and affiliates.
# This software may be used and distributed according to the terms of the Llama 2 Community License Agreement.

import fire

from llama import Llama


def main(
    ckpt_dir: str,
    tokenizer_path: str,
    temperature: float = 0.6,
    top_p: float = 0.9,
    max_seq_len: int = 128,
    max_gen_len: int = 128,
    max_batch_size: int = 4,
):
    generator = Llama.build(
        ckpt_dir=ckpt_dir,
        tokenizer_path=tokenizer_path,
        max_seq_len=max_seq_len,
        max_batch_size=max_batch_size,
    )

    prompts = [
        # For these prompts, the expected answer is the natural continuation of the prompt
        "직장에서 좋은 관계를 갖기 위해서는 ",
        "미야자키 하야오 감독의 대표작은 ",
        """신사업을 하는 팀의 첫 시작을 축하하는 메시지:

        안녕하세요 여러분,
        
        지금 시기는 변화를 """,
        # Few shot prompt (providing a few examples before asking model to complete more);
        """Translate English to Korean:
        
        peppermint => 페퍼민트
        cheese =>""",
    ]

 

 

 

#드디어 최초로 돌려보자. 아래는 16GB GPU에서 돌아간다(약 15GB의 GPU 메모리를 소모한다 RTX 4080 16GB에서 실험했다). 간단히 주어진 문장의 다음 문장을 생성하는 예시이다. 뒤에 생성하는 문장을 늘리기 위해 max_gen_len을 256으로 지정했다.

$ torchrun --nproc_per_node 1 example_text_completion.py --ckpt_dir llama-2-7b/ --tokenizer_path tokenizer.model --max_seq_len 256 --max_gen_len 256 --max_batch_size 4
> initializing model parallel with size 1
> initializing ddp with size 1
> initializing pipeline with size 1
Loaded in 6.99 seconds
직장에서 좋은 관계를 갖기 위해서는 
> 어떻게 접근해야 하는가?
목표를 달성하기 위해서는 어떻게 팀원들을 활용해야 하는가?
적응력을 높이기 위해서는 어떻게 팀원들을 설득해야 하는가?
감독의 역할은 어떻게 변화하는가?
목표를 달성하기 위해서는 어떻게 팀원들을 활용해야 하는가?
감독의 역할은 어떻

==================================

미야자키 하야오 감독의 대표작은 
> 《슈퍼 마리오 브라더스 3》(1988년)로 알려져 있다. 특히 미야자키 하야오는 이 게임을 통해 아케이드 게임 디자이너로서 더 많은 인지도를 얻었다. 애니메이션 영화 《피노키오》(2017년)의 감독이자 프로듀서이기도 하다.

## 작품 목록

### 감독

==================================

신사업을 하는 팀의 첫 시작을 축하하는 메시지:

        안녕하세요 여러분,
        
        지금 시기는 변화를 
> 엿보는 시기이며 분명 혁신을 위한 새로운 시대가 열릴 것이다.
        
        이러한 분위기에서 새로운 시작을 하는 첫 번째 팀을 환영하고 있습니다.
        
        새로운 시작을 하는 분들에게 있어서 열심히 하면 되겠습니

==================================

Translate English to Korean:
        
        peppermint => 페퍼민트
        cheese =>
> 치즈
        banana => 바나나
        orange => 오렌지
        apple => 사과
        pear => 배
        onion => 매운 맛
        garlic => 고추
        carrot => 카루로
        potato => 튀김밥
        tomato => 토마토
        cucumber => 달걀
        pepper => 카프릴
        chili => 고추
        egg => 알
        lettuce => 양파
        spinach => 실밥
        broccoli => 브로콜리
        cabbage => 당근
        cauliflower => 칼리플로어
        mushroom

==================================

 

 

 

#chat 관련되어도 아래와 같이 실험이 가능하다

$ vi example_chat_completion.py

 

# Copyright (c) Meta Platforms, Inc. and affiliates.
# This software may be used and distributed according to the terms of the Llama 2 Community License Agreement.

from typing import Optional

import fire

from llama import Llama


def main(
    ckpt_dir: str,
    tokenizer_path: str,
    temperature: float = 0.6,
    top_p: float = 0.9,
    max_seq_len: int = 512,
    max_batch_size: int = 4,
    max_gen_len: Optional[int] = None,
):
    generator = Llama.build(
        ckpt_dir=ckpt_dir,
        tokenizer_path=tokenizer_path,
        max_seq_len=max_seq_len,
        max_batch_size=max_batch_size,
    )

    dialogs = [
        [{"role": "user", "content": "라면을 맛있게 끓이는 방법은?"}],
        [...

 

 

 

$ torchrun --nproc_per_node 1 example_chat_completion.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
> initializing model parallel with size 1
> initializing ddp with size 1
> initializing pipeline with size 1
Loaded in 6.78 seconds
User: 라면을 맛있게 끓이는 방법은?

> Assistant:  I'm just an AI, I don't have personal opinions or beliefs, but I can provide you with some general information on how to make a delicious and healthy ramyeon.
Ramyeon is a popular Korean instant noodle dish that can be made in a variety of ways depending on personal preferences. Here are some tips to make a delicious and healthy ramyeon:
1. Choose a good quality ramyeon: Look for a ramyeon that is made with whole wheat or brown rice noodles, and contains vegetables and lean protein sources.
2. Add vegetables: Ramyeon can be a great way to get in some extra vegetables. Try adding sliced carrots, diced bell peppers, and chopped green onions to your noodles.
3. Use lean protein: Choose a lean protein source such as chicken, beef, or tofu to add to your ramyeon. This will not only make it more nutritious but also more filling.
4. Add some spice: Ramyeon can be quite bland, so try adding some spice to it. You can add chili flakes, soy sauce, or gochujang (Korean chili paste) to give it a kick.
5. Experiment with different seasonings: Ramyeon can be seasoned with a variety of ingredients such as sesame oil, garlic, and ginger to give it a unique flavor.
6. Use a flavorful broth: The broth of ramyeon can make or

==================================

User: I am going to Paris, what should I see?..

 

 

흥미롭게도 영어로 답변을 하면 꽤 잘한다. 강제로 한글로 이야기하게도 할 수 있는데 아쉽게도 아래와 같다. 아마도 ChatGPT처럼 한글의 token단위도 너무 작은 상태가 아닐까 싶다(답변이 통상 짧다). 한글 부분은 fine tuning등 버전이 나오리라 기대해본다. 곧 llama.cpp가 풀리면 상위 모델도 CPU/Ram에서 구동하게 될 수 있겠다.

 

$ vi example_chat_completion.py

...

    dialogs = [
        [{"role":"system","content":"always answer in Korean"},
         {"role": "user", "content": "라면을 맛있게 끓이는 방법은?"}],
        [

...

$ torchrun --nproc_per_node 1 example_chat_completion.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4
> initializing model parallel with size 1
> initializing ddp with size 1
> initializing pipeline with size 1
Loaded in 6.69 seconds
System: always answer in Korean

User: 라면을 맛있게 끓이는 방법은?

> Assistant:  "라면을 맛있게 끓이는 방법은 저렴한 물과 저렴한 간장을 사용하는 것입니다."

==================================

하나 더 실험해보자.

 

$ vi example_chat_completion.py

...

    dialogs = [
        [{"role":"system","content":"always answer in Korean"},
         {"role": "user", "content": "물리학 법칙이 모두 대칭인 이유는?"}],
        [
            {"role": "user", "content": "40대 보수적인 남성인 저는 어떤 금융상품을 관심있게 봐야할까요?"},
            {
                "role": "assistant",
                "content": """\
1. 안정적인 예적금: 원금 손실이 없으나 수익률이 다소 낮은 단점이 있습니다.
2. 공격적인 주식: 원금 손실의 가능성이 있으나, 적절한 투자를 행하여 이익실현을 하는 경우 수익률이 매우 높습니다.
""",
            },
            {"role": "user", "content": "1번 상품의 특성을 좀더 자세히 이야기해줄 수 있을까?"},
        ],
        [

..

$ torchrun --nproc_per_node 1 example_chat_completion.py --ckpt_dir llama-2-7b-chat/ --tokenizer_path tokenizer.model --max_seq_len 512 --max_batch_size 4

> initializing model parallel with size 1
> initializing ddp with size 1
> initializing pipeline with size 1
Loaded in 6.67 seconds
System: always answer in Korean

User: 물리학 법칙이 모두 대칭인 이유는?

> Assistant:  "물리학 법칙이 모두 대칭인 이유는?"

* 물리학 법칙이 모두 대칭인 이유는 입력에 따라 출력이 얼마 되는 것입니다.
(Translation: "The reason why physical laws are all symmetrical is because they are based on the input and output of the system.")

==================================

User: 40대 보수적인 남성인 저는 어떤 금융상품을 관심있게 봐야할까요?

Assistant: 1. 안정적인 예적금: 원금 손실이 없으나 수익률이 다소 낮은 단점이 있습니다.
2. 공격적인 주식: 원금 손실의 가능성이 있으나, 적절한 투자를 행하여 이익실현을 하는 경우 수익률이 매우 높습니다.


User: 1번 상품의 특성을 좀더 자세히 이야기해줄 수 있을까?

> Assistant:  Of course! The first financial product I mentioned, "安定的な預期 returns (Stable Returns)", has several key characteristics that make it an attractive option for investors. Here are some additional details:
1. Low Risk: As the name suggests, "安定的な預期 returns"

신기하게도, 일본어가 섞여 나온다는 것을 알 수 있다. 전체적으로 일본어가 섞여서 70b 모델에도 자주 등장한다고 알려져있다.

-------------------------------------------------------------------------------------------------------------

추가로 Apple Sillicon (M1/M2, gpu 사용) 에서도 아래와 같이 구동할 수 있다.

https://gist.github.com/gengwg/26592c1979a0bca8b65e2f819e31ab5c

 

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

$ make clean
$ LLAMA_METAL=1 make

 

#만약에 메모리 10gb이상 맥북이면
$ export MODEL=llama-2-13b-chat.Q4_0.gguf 

#아래 혹은 직접 링크를 다운로드

$ wget "https://huggingface.co/TheBloke/Llama-2-13B-chat-GGUF/resolve/main/llama-2-13b-chat.Q4_0.gguf 

 

#만약에 메모리  8gb이하 맥북이면

$ export MODEL=llama-2-7b-chat.Q4_0.gguf 

#아래 혹은 직접 링크를 다운로드

$ wget "https://huggingface.co/TheBloke/Llama-2-7B-chat-GGUF/resolve/main/llama-2-7b-chat.Q4_0.gguf 

 

$ ./main -m ./llama-2-7b-chat.Q4_0.gguf -t 8 -n 128 -ngl 1 --prompt "could you generate python code for generating prime numbers?"

 

#기타 아래를 통해 conda를 써서 python 필요시 따로 구동할 수 있다.

$ conda create --name=llama2 python=3.11

$ conda activate llama2

$ pip install -r requirements.txt

 

반응형
Posted by 작동미학
순수수학2023. 7. 16. 17:38

 골드바흐의 추측은 "2보다 큰 모든 짝수는 2개의 소수(동일 소수 포함)의 합으로 나타낼 수 있다" 라고 간단히 기술된다. 그리고 이는 아직 증명되지 못했다.

 

 이 문제를 파내려가다보면 결국 소수의 규칙성을 필요로 하게 되기 때문에, 아직 그 규칙성이 모호한 소수를 가지고 증명을 하기가 매우 어려운 경우들을 만나게 되겠다.

 

 이 문제를 여러가지 변형해보는 것도 가능한데, 모든 2개 소수의 합의 조합이 틈이 없이 모든 짝수를 생성해내면 된다.

 

"a,b를 각기 임의의 소수(prime number)라고 할때, a+b의 모든 조합을 갖는 집합이, n은 1이상의 자연수일때 2n의 집합을 포함한다"

 

라고 할 수도 있다.

 

이 문제에 대해서 여러가지가 선행 증명되었는데, 우선 상기 골드바흐의 추측보다 더 약한 골드바흐의 약한 추측이

 

"5보다 큰 모든 홀수는 세 소수의 합으로 나타낼 수 있다" 이고, 이는 골드바흐의 추측이 참이면 참이되는 명제다.

 

이 약한 추측에 대해, 2012년 테렌스 타오가 모든 홀수가 5개 이하의 소수의 합으로 나타낼 수 있다는 점을 증명했으며, 2013년 엘프고트가 10의 30제곱 이상에서는 성립되고, 10의 30제곱 이하에서는 컴퓨터로 모두 확인되면서 골드바흐의 약한 추측은 참임이 증명되었다.

 

결국은 아직 골드바흐의 추측을 증명하지는 못했지만 그 근처까지는 가있는 모양새이다. 그런데 여기서 흥미로운 것은 주로 소수(prime number)는 곱을 통해 숫자를 분해하는데 그 덧셈이 커버하는 영역을 다루는 것이 이 골드바흐의 추측이라는 점이다. 이런 점에서 더 다루기 까다로울 수 있겠다. 간단히 골드바흐의 추측을 살펴보았다.

 

자료상으로는 쌍동이 소수 추측(두 소수의 차이가 2인 소수가 무한히 존재한다)과도 관련이 있다고 한다.

https://namu.wiki/w/%EA%B3%A8%EB%93%9C%EB%B0%94%ED%9D%90%20%EC%B6%94%EC%B8%A1

 

반응형
Posted by 작동미학
시뮬레이션가설2023. 7. 16. 14:43

 스스로를, 요즘 유행하는 3차원 롤플레잉 온라인 게임 세계안의 캐릭터라고 생각해보자. 물론 아직 그렇게 지능있는 존재가 스스로를 인지할 정도로 진보한 게임은 없겠으나, 여하튼 상상으로 상정해볼 수 있다.

 

 그러면 그 게임 안에는 아마도 마법이 있고, 여러가지 그 게임만의 특이 요소가 있을 것이다. 게임 안의 물리 법칙은 우리네 현실을 모사했기 때문에 그 둘간에는 어느정도 유사하겠지만, 엄밀한 의미에서 같지는 않을 것이다. 아마도 게임 안의 세계가 훨씬 더 일관성이 낮을 것이라고 본다. 게임 세계의 물리 법칙의 목표는 현실과의 유사성만 유지하면 되기 때문이다. 그 일치 정확도를 소수점 아래 수십자리까지 일치 시킬 필요는 없다. 여하튼 이런 저런 재미요소로 다양한 이유로 게임안의 세계는 특정 틀의 법칙을 지니고 움직이게 된다.

 

 여하튼 그렇다가 그 게임 안의 캐릭터로서는 언젠가 이런 의문이 들었다고 하자.

"왜 하필이면 이 세계는 이런 법칙으로 작동하는가?"

 앞서 밝혔듯이 게임 안에서는 게임 밖의 사정을 전혀 모르기 때문에 왜 세계가 그런 법칙을 갖게 되었는지 설계자의 생각을 스스로 알기가 어렵다. 따라서 이 부분은 순전히 상상의 영역에서 검토하게 된다. 그런데 가만히 세상에 존재할 수 있는 많은 법칙의 조합들을 생각해보면 다음과 같이 조금더 분할해서 질문해 볼 수 있다. 이제 다시 우리가 처한 우주에 대해 생각해보자.

 

 왜 우주는 대칭과 보존이 그렇게 엄밀하게 성립하고 있는 것일까. 적당히 근사해서 맞거나 일정 수준 랜덤으로 해도 될것 같은데, 자연은 그렇게 호락호락 하지 않다. 그런데 어떤 관점에서는 이산적인 구조를 가지고 있다. 왜 원자의 개념을 도입하고 있는가? 무한이나 무한소를 도입해 인간이 인지하지 못하는 범위까지 정밀도를 낮춰 나갈 수도 있을텐데, 그렇지 않다. 이미 플랑크 상수를 통해 자연이 띄엄띄엄하다는 사실이 밝혀져있다.

 

 또한 잘 알려져있듯이 자연상수 몇개만 바뀌었어도 우리 우주의 양상이 달라졌을 것이다. 그런데 왜 하필이면 지금 이 상태인가?

 

 유명한 오캄의 면도날(Ockham's razor)은 어떤 현상을 설명할때, 더 간단한 모델을 채택하라고 이야기한다. 그런데 신기한 것이 이것은 수학적으로도 근거가 있다. 예를 들면 복잡도가 낮은 모델 A와 복잡도가 높은 모델 B를 탐색해서 찾아냈는데, 특별히 복잡한 모델 B가 A보다 더 큰 정확도로 예측하지 못한다고 가정해보자. 그러면 이 상황에서는 단순한 모델 A를 채택하는 것이 더 좋은 전략이다. 왜냐하면 어떤 문제와의 설명 일치 여부를 탐색해 찾아낸 몇가지의 후보 모델이 있을때, 특정 문제를 더 단순한 모델이 푸는 경우가 확률적으로 더 낮기 때문이다. 바꿔 말하면 단순한 모델은 동일한 역할을 하는 다른 복잡한 모델보다 더 어렵게 찾아지는 bias가 덜 될 수 있는 모델이라고 이야기해볼 수 있다. 이렇게 더 단순한 모델은 복잡한 모델에 비해서 찾기 어려운, 더 큰 장점을 갖는 모델이 된다.

 

 지금 우주의 법칙들이 만약에 여러가지 랜덤한 체계 속에서 하나 선택된 것이라면 어떨까? 이미 다수의 반복에서 얻은 어떤 특수한 사례 중 하나라고 보면 또다른 분석 방법이 될 수 있다. 물론 우리의 현재 상황이 이런 랜덤으로 선택된 경우에서의 매우 특수한 하나 일 수는 있다. 무한의 우주의 시간대 속에서 엔트로피가 어느정도 충분한 상태의 우주라서 지능이 나타나는 하필 그 시기같은 상황 말이다.

 

 그럼에도 불구하고 이러한 여러가지 의문 틀은 이 시뮬레이션 이론의 여러가지 면을 상상하는 데는 도움을 주지 않을까 싶다. 간단하게 남겨놓아 본다. 최소한 법칙이 존재한다는 점이나, 그 법칙에서 벗어나는 점이 발견되지 않는다는 점 등이 일상적인 랜덤적인 요소와는 매우 거리가 있다는 점 등이 도대체 흔하지 않은 상황임은 참고 되어야 하겠다.

반응형
Posted by 작동미학
시뮬레이션가설2023. 7. 8. 10:39

 우리가 사는 세상을 시뮬레이터로 생각해보면. 사실은 시뮬레이터 밖의 사정에 대해서 알 수가 없겠다. 게임의 세계 안에서 게임 밖의 세계를 알 수가 없다. 물론 어떤 인터페이스가 있을 수 있다. 설계에 반영하면 그만이기는 하다. 그러나 아직 그 대칭과 보존이 철저히 지켜지는 우리가 살고 있는 세상에서 생각해보면(아직은 어떠한 예외도 검증되어 관측되지 않은 상태에서) 무언가 밖을 볼 수는 없는 상황인 것이 인지 상정이다.

 

 따라서 이 시뮬레이션 이론이라는 알 수 없는 이론을 탐구하기 위해서는 우리 안에서 그것을 파악해나갈 수 밖에 없는 안타까움을 지니고 있다. 게임 안에서 게임 밖을 상상해야 하는데 이것은 거의 랜덤과 가까운 관계를 유추해나갸아하는 상황이다. 애초에 불가능할 수도 있겠다. 따라서 그저 그 시뮬레이터 안을 들여다보는 것 밖에 할 수가 없고, 그것이 수학자와 물리학자의 합심에 의해 진행되고 있는 것이 현 상황이다.

 

 그러나 그러함에도 불구하고 이 거대한 계산 체계의 장에서 숨기기 힘든 골치아픈 것들이 있다. 바로 비연속과 무한이다. 소프트웨어 개발에 있어서 이미 무한의 문제는 골치아픈 일임이 잘 알려져있다. 즉, 0으로 나누면 어떻게 표기해야 할지 난감하며 무한은 그것의 무한의 정확도를 보증하기 위해서는 무한의 저장공간이 필요하다. 이 문제 속에서 대칭과 보존을 정확히 처리하는 문제는 시뮬레이터를 디자인함에 있어서 가장 난감한 부분 중의 하나가 되는 것이다.

 

 하나의 해결 방법은 모든 것을 아주 작은 단위의 깨지지 않는 무엇인가로 상정하는 방법이다. 바로 원자이다. 그렇게 되면 무한의 저장공간이 필요하지 않고 유한의 공간만으로 가능하다. 배열을 만들고 그 배열에 원자들을 배치하면 그만이다. 0과 1로만 그 모든 것을 처리할 수 있다. 원자라는 말로 현대의 표준모형과 헷갈리게 할 필요도 없다. 무언가 가장 작은 단위를 상정하고 그것을 기준으로 처리하면 된다.

 따라서 이산적으로 다루는 것은 이 시뮬레이터의 계산을 혼란스럽게 하지 않기 위한 가장 쉬운 접근방법이다. 계산은 원자단위 까지만 하고 나머지는 "근사"하면 그만이다. 그러나 이 근사는 각 원자스러운 것들 사이의 관계가 완벽해야 한다. 이를 테면 자연에는 시간이나 에너지나 질량이나 공간처럼 서로 다른 "량"들이 존재하는데 이것들이 같은 표준으로 이루어져야만 이 하나의 "원자"라는 개념으로 각기 변환이 가능하다. 그리고 이것은 현대 표준모형에서는 플랑크 상수라는 것으로 정의되고 있다.

 

 만약에 이 "원자"라는 개념이 각 물리량마다 다른 체계가 있으면 문제가 있는 것이 근사를 통해 사라지거나 더해지게 된다. 즉 반올림과 반내림이 필요한데, 이전에 설명한대로 특정 변환이 무한이 반복되면 지속적으로 반올림이 생기거나 반내림이 한쪽으로 치우쳐 발생하면서 결국에는 무언가가 사라질 수도 있게 된다. 이렇게 되면 기나긴 계산의 반복하에서 위의 대칭과 보존이 무너지게 된다.

 

 만약에 우리가 존재하는 이 자연(시뮬레이터)이 물리학자들의 주장처럼 전체 시간을 모두 함께 넣고 계산하고 있다면 재미있게도 무한에 대한 고려가 필요하다. 그리고 그것을 완벽하게 대칭시키려면 상기 여러가지 고민이 필요하다.

 

 그러면 우리가 살아가는 이 자연(시뮬레이터)은 이것들을 어떻게 처리하고 있을 것인가?

 

 어찌보면 이 질문에 양자역학은 대답을 하고 있는것 같다. 1900년 이후에 그래서 플랑크와 보어는 이 이산적인 것들에 대해서 정리를 해나가기 시작한 것처럼 생각해볼 수 있다. 우주는 과연 이 무한이라는 연속과 이를 둘러싼 비연속을 어떻게 처리하고 있을까? 시뮬레이터의 특성에 대해 특이하게 고민할 수 있는 중요한 주제가 되겠다.

 

반응형
Posted by 작동미학

 수학은 인간의 추론에 의해서 구성되는게 일반적이다. 하지만 기존에 주장했듯이 모든 수학적 상상들이 인간의 이성과 일치하여 예측되고 전개되지 않는다. 수학은 그 안에서 질서를 지니지만, 아직 그 질서를 인간의 이성이 따라갈 수 없는 경우가 많기 때문이다.

 

 소프트웨어에서도 어떤 로직을 세웠으나 전체를 이해하기 어려운 경우가 많고, 문제가 생기면 국소적으로 지속 디버깅을 진행한다. 그런 면에서 어떤 경우는 수학을 한다는 것은 소프트웨어 디버깅을 하는 과정과 비슷하다고 생각하다. 수학 방정식 자체도 소프트웨어 로직과 그다지 다르지 않다.

트위터 발췌

 그래서 본인은 오히려 수학이 난관에 직면했을때 직접 그것을 계산하고 전개함으로써, 그 난관을 해결할 수 있다고 믿는다. 실제 값을 대입해 조사하고 경우의 수를 모두 추적하는 형태가 가능하다. 무한을 모두 점검할 수 없지만, 현대 기술은 수많은 영역을 낮은 가격으로 조사할 수 있기 때문이다. 이 과정에서 수학자들은 전에 알지 못했던 인지를 얻게 될 것이라고 믿는다.

 

 따라서 수학의 난제에 위와 같은 직접적인 컴퓨터 조사가 많아지는 부분은 필연적이라고 본다. 그 유명한 4색 정리가 그렇게 증명되었다는 것은 유명하다. 방정식과 정리 자체를 온전히 이해하여 모든 숫자 범위에서 증명되는 것과는 다르지만, 인간의 이해에는 늘 한계가 있고 이 부분을 채워줄 수 있다.

 

 향후 이러한 Computational Mathematics는 컴퓨터가 강력해짐에 따라 더 많은 사용처가 발견될 수 있지 않을까. 어떤 방법론이 서고, 더 세련된 방법들이 나오고 도구가 만들어지면, 인간이 그동안 가지 못했던 길을 개척할 수 있다. 소프트웨어는 완벽하게 제작되어야 하지만 늘 디버깅을 거치고 그것이 필수다. 수학도 그것이 더 복잡해질수록 이러한 디버깅이 중요해지겠다.

 

 상당히 큰 수학범위를 다루고 많은 고속 함수들이 공개된 Python으로 시작해보는 것도 좋지 않을까.

 

https://github.com/neibc/math

 

GitHub - neibc/math

Contribute to neibc/math development by creating an account on GitHub.

github.com

 

반응형
Posted by 작동미학
정보이론2023. 6. 25. 18:25

 최근 메모리나 저장장치의 가격하락을 다시 실감했다. 2TB 내장 고속 스토리지(M.2 NVMe SSD)가 20만원 이하에서 거래되고 있으며, 32G 고속 메모리(DDR4 Ram)도 10만원 이하로 거래된다. 아마 이 가격이 잘 실감이 안되시는 분들도 많을테다. 대개 PC나 노트북을 다 합쳐진 채로 구매하신 분들이 대부분일테다. 또한 여기다가 애플은 이러한 메모리와 CPU연산, GPU연산이 모두 가능한 애플 실리콘이라는 칩을 계속 업그레이드하고 있기도 하다. 동급 인텔칩대비 더 나은 성능과 더 적은 전력 소모를 자랑한다.

 

2TB SSD는 20만원이하, 32G 고속 램도 10만원 이하면 구매할 수 있다

 ChatGPT로 대표되는 거대 언어모델의 저장 정보를 살펴보면, 메타에서 오픈한 LLAMA 7B(파라메터 크기, 70억)가 그 모델 저장 파일을 다운로드 받으면 약 13GB 정도가 된다. ChatGPT(22.11월 최초 버전인 3.5)가 175B모델이라고 알려져있는데, 수평해서 곱하면 약 325GB정도 된다. 즉, 온 인터넷의 문서와 책을 집대성하여, 그럴듯하게 인간처럼 답변해주는 ChatGPT가 그것을 위해 메모리에 로드할 파일은 325GB 정도가 제일 큰 사이즈라고 볼 수 있다. 그것도 최근 소수점을 더 축약하는 quantization 처리를 하면 용량은 더 줄어든다. LLAMA도 65B모델이 ChatGPT의 175B모델대비 성능이 유사하다고 발표했고, 계속 그 용량은 줄어들고 있다. 그래서 대략 본인은 100GB정도면 아마도 지금의 ChatGPT가 내는 성능 정도는 할 수 있는 전자뇌가 유지될 수 있다고 주장해볼 수 있다고 믿는다.

 

 이 100GB를 저장하고 싶으면 고속 스토리지로도 20만원짜리 2TB를 사도 만원정도의 비용으로 저장을 할 수 있고, 메모리에 올려서 연산을 해도 30만원 정도면 가능하게 된 세상이라고 볼 수 있겠다. 컴퓨팅 비용은 일반 가정용 PC에서도 좀 느리지만 아예 불가능하지는 않다. 즉 그 단가가 가정용의 범주에 충분히 들어올 수 있다고 생각한다. 이렇게 세상은 인간 수준의 능력을 발휘하는 무엇인가를 이제 대량생산한 정보처리 기기에서 다룰 수 있는 수준으로 급격히 들어오고 있다.

 

 내가 어린 시절만 해도 인공지능 컴퓨터는 슈퍼 컴퓨터 같은 것에서 작동하는 그 무언가라는 이미지였는데, 딥러닝을 통해 인간의 그것과 많이 닮은 것들을 해낸다는 것도 시연되었고 심지어는 그것이 가정용의 장비로도 작동한다는 사실이 지속 현실화되고 있는 모양새이다.

 

 한달 정도 어느 물리력을 사용하는 직업이든 성실히 실행하면 이제 사람을 닮은 무언가를 작동시킬 수 있는 인프라를 구매할 수 있는 시기가 된 것이다. 놀라운 시기로 접어드는 초기라고 생각이 들지 않을 수 없다.

 

 과학사에서 앞서나간 예측이 몇가지가 있는데, 가장 위대한 예측 중의 하나가 바로 슈뢰딩거의 생명이란 무엇인가에서 지적한 것이다. 생명의 정보를 담은 것은 분자 수준의 비결정 구조에 의한 것임을 예상했고 이것이 바로 DNA의 발견으로 이어진 것이 유명하다. 그정도의 안정성을 지니고 그렇게 많은 정보를 전달하기 위해서는 그정도 작은 scale의 구조에서만 가능하다고 예측한 것이다. 오히려 더 큰 구조에서는 그런 대량의 정보를 저장할 수가 없다. 큰 스케일의 자연에서는 무엇이든 녹슬고 썩기 때문이다. 그러한 안정성은 분자 수준에서나 가능하다는 것을 슈뢰딩거는 미리 알고 있었다. 

 

 그리고 그 유사한 전개로 역시 분자와 전자 수준에서 트랜지스터나 메모리 소자들이 발견되었다. 이녀석들은 엄청난 정보를 굉장히 안정적으로 다룰 수 있다. 뇌가 세포 단위에서 처리하는 정보를 더 작은 단위에서 빠르고 안정적으로 다루게 된 것이다. 그리고 이는 슈뢰딩거의 예측이 있었던 그 시기를 지나 1950년 전후하여 지금에 이르기까지 정말 놀랍게 발전하면서, 생물이 지닌 정보처리 메카니즘을 컴퓨터라는 이름으로 눈에 보이지 않는 수준에서 다루게 된 셈이다.

 

 이후로는 내 생애를 거쳐, 그것이 발전에 발전을 거듭해 하드웨어와 소프트웨어가 동시에 발전해서 이제 바야흐로, 싼 값에 특정 분야에서는 인간과 구별이 되지 않거나 오히려 더 많이 알고 있는 지능의 모습을 흉내내는 단계에 이르게 된 것이다.

 

 어찌보면 1950년대 신경망을 만들어서 그것이 지능을 갖게 할 수 있다고 믿었던 연결주의자들의 꿈은 각종 인류의 기술 발전으로 거의 실현되어 가고 있다. 그것도 우주여행 같은 비싼 형태가 아니라(우주 여행은 사실 이미 우리 앞에 있지만 가격이 너무 비싸서 소수만이 향유할 수 있다) 가정용 장비에서도 돌아갈만큼 값싸게 다가왔다.

 

 기술은 더 발전할 것이고 요구되는 자원은 더 작게, 그리고 자원의 가격은 더 떨어지는 상황이 지속될 것이 뻔하다. 결국에는 연결주의자들의 예측은 더 가속될 수 밖에 없다. 그렇게 논란이 되었던 범용 인공지능이 가능하느냐 그렇지 않느냐는 이제 선을 넘었다고 생각한다. 물론 모든 부분이 인간처럼 되는 것에는 시간이 걸리겠지만, 그게 몇십년이 걸리든 무엇이 중요하겠는가. 이미 가 방향으로 가속되고 있고, 그 증거들이 도처에 보이지 않는가.

반응형
Posted by 작동미학