'Machine Learning'에 해당하는 글 17건



자연어 처리(NLP: Natural Language Processing)란 컴퓨터가 인간의 언어를 인식하게 만드는 인공지능의 주요 분야 중 하나로, 정보 검색, 정보 추출, 음성 인식, 단어 분류, 구문 분석, 감정 분석, 자동 대화, 기계 번역 등에 사용된다.


전 세계에서 오랜 기간 관련 학문을 연구하고 있음에도 불구하고, 영화 속의 사람 같은 인공지능을 아직까지 완벽하게 개발하지 못했다는 것은 그만큼 사람 같은 컴퓨터를 만드는게 쉽지 않다는 것이다. 점점 사람과 소통할 수 있을 정도로 발전할 수는 있겠지만 사람이 될 수는 없다. 하지만 그에 가장 가깝게 다가갈 수 있도록 내 목적에 맞는 분야를 컴퓨터가 학습하고 그에 대한 옳은 결과를 얻는 것이 자연어 처리의 목적이다.


자연어 처리는 지금껏 많은 발전을 했다. 텍스트 데이터를 활용한 통계 기반 머신러닝에서, 최근엔 GPT나 BERT 같은 인공 신경망 기반의 모델들을 주로 사용하고 있다. 하지만 그럼에도 통계 기반 방법론 역시 자연어 처리에 대한 전체적인 시야를 갖는데 큰 도움이 될 것이다.



간략히 전반적인 자연어 처리 단계를 보자면 아래 정도로 정리해 볼 수 있다.



단계 1. 텍스트 데이터 수집


이 텍스트 데이터들은 말뭉치(코퍼스: Corpus, corpora) 라고도 한다. 컴퓨터에 학습을 시킬 원시 데이터라고 볼 수 있으며, 컴퓨터가 학습할 만큼 충분한 양을 준비해야 한다. 이미 많은 분야(Domain) 의 코퍼스가 공개되어 있고, 특정 분야의 경우 별도로 데이터를 수집해야 한다. 사회/경제 전반에 관한 학습을 시켜야 하는데, 연예/스포츠 코퍼스를 수집한다면 제대로 된 결과를 예상할 수 없을 것이다. 자연어 처리의 모든 과정에서 비용과 속도를 간과할 수 없다. 제대로 된 코퍼스를 준비하지 못한다면 갈수록 비용과 복잡도는 늘어날 수 밖에 없다.



단계 2. 코퍼스 분석


컴퓨터가 인식하기 쉽도록 코퍼스의 내용을 세세하게 분석해야 한다. 작은 의미 단위인 형태소(morphological) 분석, 품사들로 문장의 구조를 결정하는 구문(syntactic) 분석, 문법에 맞지만 올바른 단어 의미를 위한 의미(semantic) 분석, 문맥상 흐름을 이을 수 있는 화용(Pragmatic) 분석 등이 필요하다. 다시 말해, 문장 별로 구분하고, 원하는 작은 의미 단위로 자르고, 불용어 제거나 단어 원형 대체로 복잡성을 줄여, 정돈된 데이터를 만든다. 언어별 구조나 표현 등이 모두 다르기 때문에 코퍼스가 어떤 언어로 이루어져 있는지에 따라 처리 방법들도 다양하다.



단계 3. 단어의 수치화 및 모델링


코퍼스를 분석하여 정리된 데이터를 컴퓨터가 효율적으로 처리하기 위해 적절히 수치화 하여 모델링 하는 과정이다.



단계 4. 컴퓨터 학습, 테스트, 평가


모델링을 마친 데이터로 컴퓨터 학습을 시키고, 테스트를 거쳐 모델 비교 및 보완이 지속적으로 필요하다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,



W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found

I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.


PyCharm 에서 tensorflow 실행시 CUDA 10.1 이 설치되어 있지 않다는 경고(Warning).


CUDA 는 NVIDIA 의 CUDA 코어가 장착된 GPU 에서 병렬 처리를 가능하게 하는 GPGPU 기술이다. TensorFlow 2.0 부터는 CPU 버전과 GPU 버전이 통합되어, CUDA 를 지원하는 NVIDIA 그래픽카드가 있고 해당 CUDA 드라이버가 설치되어 있다면 자동으로 GPU 를 인식한다. 만약 NVIDIA 그래픽카드나 CUDA 가 설치되어 있지 않다면 PyCharm 에서는 위와 같이 경고를 발생하고 CPU 모드로 실행될 것이다.


CUDA 를 지원하는 NVIDIA 그래픽카드가 있다면 드라이버를 설치하여 GPU 가속을 사용할 수 있다. cudart64_101.dll 이 없다하니 10.1 버전을 설치하면 된다. 64는 비트 101은 버전을 뜻한다. 그 전에 본인의 CPU 가 CUDA 10.1 버전을 사용할 수 있는지를 먼저 체크해야 한다.


>>> import tensorflow as tf
>>> tf.config.list_physical_devices('GPU')
 
...
pciBusID: 0000:01:00.0 name: GeForce GTX 1050 computeCapability: 6.1
...
W tensorflow/stream_executor/platform/default/dso_loader.cc:59] Could not load dynamic library 'cudnn64_7.dll'; dlerror: cudnn64_7.dll not found
...
cs


또는 위키 사이트(https://en.wikipedia.org/wiki/CUDA) 본인 CPU 를 검색하여 compute capability 버전을 확인하면 대부분이 3.0~7.5 사이에 있으며, 이 버전들은 CUDA 10.1 을 사용하는데 문제가 없다.


 CUDA SDK 10.0 – 10.2 support for compute capability 3.0 – 7.5 




CUDA® Toolkit 설치 - https://developer.nvidia.com/cuda-toolkit-archive


설치 후에 PyCharm 을 재시작하면, 경고가 사라지고 아래와 같은 GPU 사용 로그를 볼 수 있다.


I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll


하지만 여기서 끝이 아니다.

심층 신경망을 위한 cuDNN(Cuda Deep Neural Network) 라이브러리의  cuDNN64_7.dll  파일이 없으면 TensorFlow 가 로드되지 않는다.




cuDNN 설치https://developer.nvidia.com/cudnn


cuDNN 은 NVIDIA 의 회원이어야 다운로드가 가능하다. 귀찮지만 가입을 하고 본인에 맞는 버전의 cuDNN SDK 를 다운로드한다. 마찬가지로 현재 최신버전인 cuDNN v8.0.5 for CUDA 10.1 를 사용할 수도 있지만 메시지에서 요구하는 cuDNN7 의 최신버전(cuDNN v7.6.5 for CUDA 10.1)을 다운받는다. 그리고 다운받은 디렉토리 안의 세가지 파일을

  • bin/cudnn64_7.dll, 
  • include/cudnn.h, 
  • lib/x64/cudnn.lib

CUDA 툴킷이 설치된 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1 안의 각각의 디렉토리에 복사하면 추가로 Path 설정을 할 필요가 없다.


* 설치 확인


>>> import tensorflow as tf
>>> tf.config.list_physical_devices('GPU')
 
I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library nvcuda.dll I tensorflow/core/common_runtime/gpu/gpu_device.cc:1716] Found device 0 with properties: pciBusID: 0000:01:00.0 name: GeForce GTX 1050 computeCapability: 6.1 coreClock: 1.493GHz coreCount: 5 deviceMemorySize: 2.00GiB deviceMemoryBandwidth: 104.43GiB/s I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cublas64_10.dll I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cufft64_10.dll I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library curand64_10.dll I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cusolver64_10.dll I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cusparse64_10.dll I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudnn64_7.dll I tensorflow/core/common_runtime/gpu/gpu_device.cc:1858] Adding visible gpu devices: 0
cs


CUDA 관련 자세한 사항은 텐스플로우 사이트의 [GPU 지원] 항목을 참조.

https://www.tensorflow.org/install/gpu





WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,