[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고 엔코아 AI 캠퍼스에서 첫 주는 Orientation과 하루 일정의 교육이 이루어 지다 보니, 이번 주가 본격적인 첫 주라고 봐야 할 것 같다. 정말 시간이 눈 깜짝할 사이에 지났다. 이번 주는 AI 개발자의 가장 기본이 되는 Python Programming 능력을 다지고, 실제 데이터 분석 의 핵심인 데이터 수집과 전처리 기술을 습득하는 매우 중요한 시간이었다. Python의 핵심 문법부터 라이브러리를 활용한 실무 기술까지, 적지 않은 양을 학습했고, 학습한 것들을 정리해 본다. 1. Python Programming 문법 가장 먼저 프로그래밍의 기초가 되는 변수와 제어문을 시작으로 코드의 재사용성을 높여주는 함수와 복잡한 데이터를 효율적으로 다루기 위한 자료구조를 학습했다. (1) Python 핵심 문법 정리 - 제어문 : if, for, while 등 조건에 따른 흐름 제어 및 반복 작업 수행 - 자료구조 : 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set) 등 데이터 특성에 맞는 저장 및 관리 - 함수(Function) : 코드의 논리적 단위 분리, 매개변수와 반환 값을 활용한 코드 재사용성 극대화 # 자료구조와 함수 활용 예시 def process_data(data_list): result = {} for item in data_list: if item not in result: result[item] = 1 else: result[item] += 1 return result data = ['apple', 'banana', 'apple', 'orange', 'banana'] count_result = process_data(data) print(count_re...

파이토치(PyTorch) 입문 가이드

 파이토치(PyTorch) 입문 가이드

처음 딥러닝(Deep learning)을 학습할 때, 가장 먼저 고민되는 것이 '어떤 도구를 사용해야 할까?' 일 것이다. 

현재 딥러닝 분야를 양분하고 있는 두 가지 거대한 산맥은 Google텐서플로우(TensorFlow)메타(Meta)파이토치(PyTorch)이다.

그중에서도 최근 인공지능 연구자들과 개발자들 사이에서 가장 압도적인 사랑을 받고 있는 것이 파이토치(PyTorch)이다.

이제부터 딥러닝 학습자의 눈높이에 맞춰 파이토치가 무엇인지, 왜 이토록 인기가 많은지 핵심 개념들을 정리와 함께 배워보겠다.

1. 파이토치(Pytorch)

파이토치는 메타(Meta, 페이스북)의 AI 연구팀(FAIR)이 주도해서 개발한 오픈소스 머신러닝 프레임워크 이다. 쉽게 말해, 우리가 복잡한 수학 수식을 바닥부터 다 작성하지 않아도 인공지능 모델을 레고 블록 조립 하듯이 쉽게 만들 수 있도록 도와주는 '도구 상자' 라고 생각하면 된다.

루아(Lua)언어 기반이었던 토치(Torch)를 파이썬(Python) 환경에 맞게 새롭게 설계해서 출시한 것이 그 시초이다. 현재 전 세계 AI 연구 논문의 대다수가 파이토치를 기본 프레임워크로 채택하고 있을 만큼 강력한 생태계를 구축하고 있다.

*루아(Lua)언어 : 가벼운 명령형/절차적 언어로, 인터프리터로 코드 실행 가능

파이토치(PyTorch) LOGO

머신러닝 프레임워크의 분야별 점유율 비교


2. 개발자가 파이토치를 선택하는 이유

(1) Pythonic, 직관적인 문법

파이토치는 파이썬에 완벽하게 동화되어 있다. 기존에 파이썬 데이터 분석이나 코딩을 해본 사람이라면 익숙한 넘파이(Numpy) 라이브러리와 사용법이 매우 흡사하다. 새로운 딥러닝 전용 문법을 새로 외울 필요 없이, 평소에 파이썬을 작성하던 흐름 그대로 모델을 설계하고 데이터를 다룰 수 있어 학습 하기가 쉽다.

(2) 코드를 실행/구성하는 '동적 연산 그래프'

딥러닝 모델은 수많은 수식들이 연결된 '그래프' 형태로 작동한다. 과거의 프레임워크들은 이 그래프를 미리 처음부터 끝까지 다 그려놓고(Define-and-Run) 데이터를 흘려보내는 방식이었다. 이 방식은 속도는 빠르지만, 중간에 에러가 발생하면 어디서 문제가 발생했는지 찾기가 무척 어렵다.

반면, 파이토치는 동적 연산 그래프(Dynamic Computational Graph, Define-By-Run) 방식을 사용한다. 그래서 코드가 한 줄 실행될 때마다 실시간으로 그래프를 그려나간다. 덕분에 우리는 일반적인 파이썬 코드를 디버깅할 때처럼  print()  함수를 중간에 넣어 값이 어떻게 변하는지 직관적으로 확인 할 수 있다.

동적 연산 그래프와 정적 연산 그래프 비교


(3) 막강한 오픈소스 커뮤니티와 생태계

최근 주목받는 자연어 처리 플랫폼인 허깅페이스(Hugging Face)를 비롯해서 최신 AI 연구 모델들은 대부분 파이토치를 기준으로 가장 먼저 코드를 공개하고 있다. 전 세계의 유능한 개발자들이 미리 만들어둔 훌륭한 모델과 코드들을 가져다 쓰기(git clone)에 가장 좋은 환경이라는 의미이다.

*허깅페이스(Hugging Face) : AI 커뮤니티, 머신러닝 커뮤니티로 AI 관련 협업 플랫폼이다.


3. 두 가지 파이토치(PyTorch) 핵심 개념

파이토치를 제대로 활용하기 위해 반드시 알아야 할 두 가지 핵심 개념이 있다.

(1) 텐서(Tensor) : 데이터의 기본 단위

- 텐서는 파이토치에서 데이터를 표현하고 다루는 가장 기본적인 단위.

- 다차원 배열(행렬)을 의미한다.

- 파이썬의 리스트(List)나 넘파이의 배열(ndarray)과 비슷하게 생겼지만, 텐서가 가진 강력한 무기는 바로 GPU 가속을 지원한다는 점이다. 수십만 개의 데이터를 연산할 때 텐서를 GPU에 올려 (Offloading) 계산하면 CPU보다 수십 배 빠른 속도를 낼 수 있다.

텐서의 차원 (0D 스칼라 ~ 3D 큐브) 시각화


(2)오토그라드(Autograd) : 자동 미분 마법사

- 딥러닝 모델이 똑똑해 지려면 자신이 틀린 것을 인식하고 정답에 가까워 지도록 수치를 조정하는 과정, 즉 '역전파(Backpropagation)' 와 '미분' 연산이 필요하다. 오토그라드는 개발자가 복잡한 미분 공식을 직접 풀 필요 없이, 텐서의 모든 연산 과정을 추적하여 미분 값을 자동으로 계산해 주는 파이토치의 핵심 엔진이다.

*역전파(Backpropagation) : 신경망의 출력과 정답 사이의 손실을 줄이기 위해, 손실 함수의 기울기(Gradient)를 효율적으로 게산하는 알고리즘이다.


4. 파이토치 기본 코드

간단하게 텐서를 생성하고 GPU로 보내는 기초 코드를 살펴 보자.


import torch # 1. 2x3 크기의 무작위 텐서 생성 my_tensor = torch.rand(2, 3) print("생성된 텐서:\n", my_tensor) # 2. 오토그라드(자동 미분)를 사용하기 위한 설정 # requires_grad=True를 주면 이 텐서에서 일어나는 모든 연산을 추적합니다. x = torch.tensor([2.0], requires_grad=True) y = x ** 2 + 5 # y = x^2 + 5 (x가 2일 때 y는 9) # 역전파(미분) 수행 y.backward() print("\ny를 x로 미분한 값:", x.grad) # 2x = 4.0이 출력됨 # 3. GPU 사용 가능 여부 확인 및 텐서 이동 if torch.cuda.is_available(): device = torch.device("cuda") # GPU 장치 설정 gpu_tensor = my_tensor.to(device) # 텐서를 GPU로 이동 print("\nGPU로 이동된 텐서:", gpu_tensor) else: print("\n현재 환경에서는 CPU를 사용합니다.")

위 코드처럼 파이토치는 일반적인 파이썬 문법과 거의 동일하게 흘러가기 때문에, 코드 몇 줄만으로도 딥러닝의 복잡한 기초 공사를 튼튼하게 다질 수 있다.


파이토치라는 훌륭하고 친절한 도구가 복잡한 수학 연산과 최적화 과정을 대신 처리해 주기 때문에 '딥러닝' 이라는 단어가 주는 무게감 때문에 지레 겁을 먹을 필요는 없다.  파이썬 기본기를 어느 정도 익혔다면, 망설이지 말고 파이토치를 설치하여 직접 텐서를 만들어 보는 것부터 시작해 보길 추천한다.


#PyTorch #Tensor #TensorFlow #Lua #HuggingFace #Numpy #Autograd #DeepLearning #딥러닝 #파이토치 #텐서 #텐서플로우 #루아 #허깅페이스 #넘파이 #오토그라드

댓글

이 블로그의 인기 게시물

[SK네트웍스 family 엔코아AI캠퍼스] 나의 목표는 머신러닝 엔지니어다.

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 3주차 회고

[SK네트웍스 패밀리 엔코어AI캠퍼스] AI 머신러닝 캠프 1기_7월 4주차 회고