딥러닝 프레임워크는 복잡한 신경망 모델을 설계, 훈련, 검증, 배포를 위해 사용되는 라이브러리와 도구이다. 이들을 사용하면 딥러닝 알고리즘 구현을 쉽게 할 수 있을 뿐만 아니라, 높은 수준에서 모델 구축 및 실험이 가능하다.
프로젝트 특성이나 목적, 환경 등에 따라 적절한 프레임워크를 사용하는 것이 중요하다. 아래는 프로젝트 특성에 따른 딥러닝 프레임워크 선택 예시이다.
- 연구 목적: 실험적인 아키텍처와 알고리즘에 적합한 유연성을 제공하는 PyTorch 추천
- 산업 등 대규모 데이터 사용: 대규모 데이터 세트와 복잡한 모델을 다루는 데 필요한 도구와 확장성을 제공하는 TensorFlow 추천
- 교육 및 프로토타이핑: 간단하고 직관적인 API로 신속한 모델 구축을 지원하여 학습과 프로토타이핑에 이상적인 Keras 추천
하나하나 자세하게 알아봅시당.
✅ Tensorflow
Google Brain 팀에서 개발한 오픈소스 라이브러리로, 성능과 확장성이 뛰어나 대규모 수치 계산이나 대규모 데이터셋, 복잡한 모델을 사용하는 프로젝트 등에 사용된다. TensorFlow 2.x 버전부터는 Keras API와 통합하여 더 사용이 편해지고 사용자 친화적이 되었다.(그니까 2.x 버전 사용 추천드립니다! 버전 잘 맞춰야함...버전 두통ㅇ..ㅣ...으윽...)
✏️ 특징
- 데이터 플로우 그래프: 계산을 노드(연산)와 엣지(텐서)로 구성된 그래프로 표현함. 복잡한 연산도 시각적으로 이해하기 쉬운 구조로 나타낼 수 있음
- 텐서 : 데이터를 나타내는 주요 객체이며, 다차원 데이터 배열로 모든 연산의 입출력으로 사용
- 확장성: 분산 처리를 지원하며, Google의 TPU(Tensor Processing Unit)를 포함하여 단일 PC에서부터 수백 대의 서버에 이르기까지 다양한 환경에서 동작 가능
- 툴, 라이브러리: 광범위한 도구와 라이브러리를 제공하며, TensorFlow Hub에서 사전 훈련된 모델을 쉽게 사용할 수 있으며 재사용하여 데이터 미세 조정도 가능함
- 자동 미분: 모델을 훈련 시 역전파를 자동화하여, 미분 계산을 자동으로 수행하고 모델의 학습 파라미터를 효율적으로 최적화할 수 있음
- Keras 통합: TensorFlow 2.x에서는 Keras API를 사용하여 모델을 더 쉽게 구성하고 훈련할 수 있음
✏️ 사용사례
- 이미지 처리
- 자연어 처리
- 음성 인식
- 추천 시스템
- 강화 학습
등등
✅ Keras
Keras는 신경망 모델을 빠르게 실험하는 목적으로 프랑수아 숄레(François Chollet)에 의해 개발되었다. TensorFlow, Theano, Microsoft Cognitive Toolkit 같은 여러 백엔드 엔진 위에서 작동하는 고수준의 신경망 라이브러리로, 간단하고 사용하기 쉬운 API를 제공한다. TensorFlow 2.x 버전 이후로는 TensorFlow의 공식 인터페이스 중 하나로 통합되었다. 층, 활성화 함수, 손실 함수 등을 모듈처럼 쉽게 추가하거나 변경할 수 있으므로 입문으로 추천한다고들 한다.
✏️ 특징
- 다중 백엔드 지원: Keras는 TensorFlow, Theano, CNTK와 같은 여러 계산 백엔드를 지원함. 백엔드 선택 및 변경 용이
- Keras가 제공하는 기본 클래스와 함수를 상속받아 필요한 메소드를 구현할 수 있을 뿐만 아니라 새로운 클래스나 함수를 만들어 Keras에 통합할 수도 있음
- 모델 : 주로 Sequential 모델과 함수형 API 두 가지 방식을 사용하여 모델을 구성 .
- Sequential 모델: 층을 순차적으로 쌓아 올리는 간단한 방식으로, 대부분 일반적인 모델 형태
- 함수형 API: 복잡한 모델을 구성할 수 있는 API로, 다중 입력과 출력, 공유 층, 데이터 흐름의 다양한 구성을 모델링 할 수 있음
- Layers: 다양한 종류의 층(전결합 층, 합성곱 층, 풀링 층 등)을 제공하며, 사용자가 직접 커스텀 층을 만들 수 있음
✏️ 사용사례
이미지 분류, 텍스트 분석, 시계열 예측 등 다양한 머신러닝, 딥러닝 프로젝트에 적용됨
✅ PyTorch
PyTorch는 Facebook의 AI Research lab (FAIR)에 의해 개발된 오픈 소스 머신러닝 라이브러리이다. PyTorch는 Python의 직관적인 특성을 살려 사용하기 쉽고, 유연성과 속도가 좋아 요즘 많이 사용되고 있다.
✏️ 특징
- 명령형 프로그래밍: '즉시 실행(eager execution)' 모델을 사용하여 코드 디버깅이 용이
- 동적 계산 그래프: 계산 그래프를 생성하여 복잡한 아키텍처와 조건부 동작을 가진 모델을 쉽게 구현할 수 있음. 또한, 계산 그래프가 동적이기 때문에 모델의 구조를 실행 중에도 변경할 수 있음
- 강력한 GPU: NVIDIA CUDA를 통해 강력한 GPU 가속을 지원
- TorchScript: PyTorch 모델을 독립적인 프로그램으로 컴파일 할 수 있는 방법을 제공하여 모델을 서버나 모바일 환경에서도 쉽게 배포할 수 있도록 해줌
- Python과 높은 호환성
✏️ 구성요소
- Tensor: PyTorch에서는 데이터를 텐서로 표현. 텐서는 PyTorch의 기본 데이터 구조로, GPU를 통해 연산을 가속화할 수 있음
- Autograd Module: 자동 미분을 제공하여 신경망에서 역전파 단계를 간소화. 모델을 학습할 때 필요한 그라디언트 계산을 자동화함으로써 사용자가 복잡한 미분 연산을 직접 처리할 필요가없음
- Optim Module: 다양한 최적화 알고리즘을 포함하고 있어 신경망을 효과적으로 학습. SGD, Adam 등이 이 모듈에 포함
- nn Module: 다양한 신경망 층과 비용 함수를 포함하고 있어 모델 구축이 용이
✏️ 사용사례
- 컴퓨터 비전: 이미지 분류, 객체 감지, 세그먼테이션 등
- 자연어 처리: 텍스트 분류, 번역, 자동 요약 등
- 강화 학습: 게임 환경 제어, 로봇 경로 계획 등
등등...
✅ [머신러닝 라이브러리] Scikit-learn
기본적인 머신러닝 작업과 데이터 분석에 매우 유용하며, 특히 작은 데이터셋 또는 중간 규모의 데이터셋에 대한 전통적인 머신러닝 작업에 적합한 머신러닝 라이브러리이다.
✏️ 특징
- 다양한 머신러닝 알고리즘 : 분류, 회귀, 군집화 등 다양한 머신러닝 알고리즘 제공(SVM, Random Forest, 로지스틱 회귀 등)
- 도구 및 기능 제공 : 데이터 전처리, 모델 평가, 파라미터 조정, 교차 검증 등 머신러닝 모델 구축 및 평가를 위한 도구와 기능을 제공함
- 확장성 : NumPy, SciPy 위에 구축되어 있어, 대규모 데이터셋과 복잡한 데이터 분석 작업에 적합한 수학적 연산을 효율적으로 처리할 수 있음
'AI & DATA > AI' 카테고리의 다른 글
Google의 Titans: 인간과 유사한 기억력을 갖춘 신경망의 탄생 (1) | 2025.02.05 |
---|---|
AI개발자가 준비하는 면접 기초 개념 (2) (0) | 2024.06.12 |
AI개발자가 준비하는 면접 기초 개념 (1) (0) | 2024.05.29 |
우당탕탕 MLflow 입문기 (1) | 2024.05.07 |