텐서플로우, 파이토치 라이브러리

이승우·2025년 1월 21일

생성형 인공지능

목록 보기
3/7

NLP(Natural Language Processing)

사람의 언어와 관련된 모든 것을 이해하는 데에 중점을 둔 언어학 및 기계 학습(머신 러닝) 분야

  • 전체 문장 분류: 리뷰에 드러난 감정 파악하기, 스팸 메일 분류하기, 문장이 문법적으로 올바른지 혹은 문장 쌍이 논리적으로 관련이 있는지 없는지 결정하기
  • 문장 내 단어 분류: 문장 구성 성분(명사, 동사, 형용사 등) 혹은 개체명(사람, 장소, 기관) 식별하기
  • 텍스트 컨텐츠 생성: 자동 생성 텍스트로 프롬프트 작성하기, 텍스트 내 마스킹 된 단어의 빈칸 채우기
  • 텍스트 안에서 정답 추출하기: 지문과 질의가 주어질 때 지문에 주어진 정보를 이용해 질의에 대한 정답 추출하기
  • 입력 텍스트로부터 새로운 문장 생성하기: 입력 텍스트를 다른 언어로 번역하거나, 요약하기

텐서플로우(Tensorflow)

  • 구글 브레인 팀에서 개발한 오픈소스 머신러닝 및 딥러닝 프레임워크
  • 데이터를 텐서라는 다차원 배열로 표현하며 이 텐서의 흐름을 정의하고 계산하는 그래프 기반의 구조를 사용
  • 대규모 데이터셋과 복잡한 모델에 적합

특징

  • 확장성: 대규모 분산 시스템부터 모바일 기기까지 다양한 플랫폼에서 실행 가능.
  • 유연성: 사용자 정의 가능한 신경망 구조를 쉽게 구성할 수 있음.
  • 오픈소스: 누구나 무료로 사용 가능하며, 커뮤니티가 활발하게 발전 중.
  • 멀티 언어 지원: Python을 중심으로, C++, JavaScript, Swift 등 다양한 언어를 지원.

정적 계산 그래프(Define-and-Run)구조

  • 계산 그래프를 설계한 다음 그래프에 데이터를 넣는다
  • 연산의 정의와 실행이 분리되어 있어 코드가 직관적이지 않다
  • 2.x 버전에는 동적 계산 그래프도 허용

데이터 플로우 그래프(Data Flow Graph)

그래프는 노드와 노드를 잇는 엣지로 구성되어있다.

  • 오퍼레이션(Operation)
    그래프 상의 노드. 오퍼레이션은 하나 이상의 텐서를 받을 수 있다. 오퍼레이션은 계산을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다.

  • 텐서(Tensor)
    내부적으로 모든 데이터는 텐서를 통해 표현된다. 텐서는 일종의 다차원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달된다.

  • 세션(sisseon)
    그래프를 실행하기 위해 필요. 오퍼레이션의 실행 환경을 캡슐화한 것.

  • 변수(Variables)
    변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용. 메모리 상에서 텐서를 저장하는 버퍼 역할.

ex) 데이터 1.0을 갖는 노드1과 데이터 2.0을 갖는 노드2를 합친 연산 node3

  • 각 노드 사이의 연결이나 다차원 배열 등을 의미하는 텐서 사이의 연결 관계를 풍부하게 표현할 수 있다

장점

그래프를 구축하면, 동일한 그래프를 반복적으로 다시 사용하게 되므로 프레임워크에서 그래프에 대한 최적화를 할 수 있다

단점

코드가 직관적이지 않고
그래프가 정의된 후에는 연산을 변경하기 어렵다

파이토치(Pytorch)

파이썬 기반 오픈소스 머신러닝 라이브러리

  • 간결하고 구현이 빨리 되며, 텐서플로우보다 익히기 쉽다
  • 그래프가 동적으로 변화할 수 있다
  • 코드 자체가 파이썬과 유사
  • Tensorflow에 비해 실제 생산 환경으로 배포할 때 더 복잡할수가 있음

특징

동적 계산 그래프 (Define-by-Run)

  • 코드를 실행하는 순간 모델이 어떻게 동작할지를 결정
  • 순방향 계산을 통해 동적으로 정의된다
  • 사용자가 코드를 순차적으로 작성하고 실행 할 수 있음
  • 모델 구축 및 디버깅이 더 직관적

차이점

텐서플로우파이토치
Define-and-Run(정적 계산 그래프)Define-by-Run(동적 계산 그래프)
계산 그래프를 정의한 다음 데이터를 넣는다데이터를 흘려보냄으로써 계산 그래프 정의

0개의 댓글