Rust(1) – AI시대 개발자가 Rust를 익혀야하는 이유 + 설치

아직 한국에는 Rust개발자가 C++, JAVA, Python, JS등 다른언어에비해 많이 적은것 같습니다. 물론 쓰는곳은 쓰이고 한국에도 Rust를 쓰시는분이 많이계시겠죠. 하지만 사용자가 적다보니 검색해보면 자료가 많이 나오지 않네요. AI개발을 공부하다가 알게된 사실인데 Rust가 생각보다 근미래에 더 각광받는 널리 쓰이는 언어가 될것같다는 생각이 들어 그 내용을 공유하려고 합니다. 이미 글로벌테크기업들 애플 구글 아마존에서는 Rust를 많이사용중이고 AI개발에 이용되는 Computer Vision(CV), NLP(자연어처리), MLOps(모델배포및관리) 등 여러 분야에서 Python을 사용할때보다 압도적으로 빠른 성능을 보인다고 하네요.

Computer Vision(CV)

CV기술을 사용하는 분야는 다양하지만 대표적으로 자율주행, 실시간 CCTV분석등에 사용됩니다. 물론 정적이거나 다른 영상및 사진 분석에도 모두 사용되죠. 하지만 특히 자율주행이나 실시간 CCTV분석을하려면 지연시간(Latency)가 매우 중요한 요소가되겠죠. 지연시간을 최소화하려면 당연히 AI연산이 빠르게 작동해야하는데, Rust언어는 CV를 사용함에 있어서 Python과는 비교할수 없을정도로 빠르고 심지어 C++보다도 빠른 성능을 보여준다고 합니다. C++용 CV라이브러리인 OpenCV는 빠르긴하지만 추상화비용때문에 오버헤드가 발생하여 느리다고 합니다. C++은 virtual class를 사용해 추상화를 지원하긴하지만 호출과정에서 오버헤드가 발생하는데, C++ 사용해보신분들은 바로 이해가 되실겁니다.

NLP(자연어 처리)

2022년말 ChatGPT가 출시후 여러 LLM모델이 공개되었는지 현재 4년도 채 되지않아 상용 LLM만 셀수없이많고 단순 LLM을 뛰어넘어 영상및 사진도 이해하고, 만들어주기까지 하는 빠른 발전을 보여왔습니다. Rust는 LLM모델의 연산처리를 할때도 특히 Python보다 빠른데요, Python은 가비지 컬렉터때문에 텍스트를 메모리에 올릴때 많은 복사나 오버헤드가 발생하기에 동일 서버사양에서 Rust가 더 많은 데이터를 빠르게 처리할수있게 됩니다.

MLOps (모델 배포, 인프라 관리 모니터링)

MLOps에서 런타임에러는 큰 비용손실로 이어지는데, Rust는 강력한 타입안정성을 제공하여 런타임에러가 적습니다. C++은 타입안정성은 제공하지만, 포인트를 사용해야하기에 다른이유로 런타임에러가 발생할 확률이 크고, Rust는 참조기능 (C++의 포인터와 같은기능은 아니지만 같은 목적으로 대응되는 기능)이 컴파일러로부터 엄격하게 관리되어 런타임에러가 나올 확률이 가장적습니다.

두번째로 Binary를 직접 배포하므로 Python처럼 의존성문제를 겪지 않고, 실행파일 하나로 배포할수있어서 클라우드 비용이 절감됩니다.

Rust의 장점과 단점

물론 Rust는 단점도 존재합니다. Rust는 기본적으로 어렵습니다 평균 학습기간도 C++은 2-4주인데 Rust는 그의 두배인 4-8주입니다. 뿐만아니라 개발에 걸리는시간도 Python보다 오래걸립니다. 따라서 Python으로 테스트나 프로토타입 개발을 하는것이 좋지만, 실제 서비스를 배포 할 경우에는 비용적인 측면이나 성능적인측면에서 매우 유리합니다.

AI개발을할경우 모델을 트레이닝 시킬때는 빠르게 만들어서 민첩하게 변경하면서 학습시킬수있는 Python을 사용하고, 실제 배포시 추론엔진이나 데이터 처리 파이프라인은 Rust로 작성하는것이 좋은 전략이 될것 입니다. 그래도 Rust를 익히라고 권유하는 이유는 Python은 AI개발자라면 누구나 아는 언어지만 Rust는 남들과의 차별점을 갖게해주는 AI개발자의 무기가 될것입니다.

Rust 설치

rustup

공식 홈페이지: https://rust-lang.org/learn/get-started

윈도우는 이곳에서 다운받고 MacOS나 Linux 유저는 curl 명령어로 설치할수있는데 아래 링크 참조.

https://doc.rust-lang.org/book/ch01-01-installation.html

vscode (IDE)

필수 확장 프로그램(Extensions) 설치하기

VS Code 왼쪽의 **확장 탭(Ctrl + Shift + X)**을 누르고 아래 세 가지를 검색하여 설치하세요.

  1. rust-analyzer: 검색창에 rust-analyzer 입력 후 설치 (공식 로고: 톱니바퀴와 게 다리 모양).
  2. Even Better TOML: Cargo.toml 파일의 문법 강조와 자동 완성을 위해 필수입니다.
  3. CodeLLDB: 디버깅(중단점 설정 및 변수 확인)을 위해 필요합니다. 설치 시 추가 구성 요소를 다운로드한다는 알림이 뜨면 ‘Yes’를 눌러주세요.

Rust Project 생성

#프로젝트 생성 - 프로젝트이름으로 폴더가 자동생성됨 (주의)
cargo new my_rust_project
#vscode로 실행
cd my_rust_project
code . -r

Rust 기본파일

#Cargo.toml: 프로젝트 이름, 버전, 사용할 라이브러리를 적는 설정파일

#src/main.rs: 메인 코드파일

#.gitignore

빌드 및 실행 테스트

# 컴파일 + 실행
cargo run
# 컴파일만
cargo check

디버깅 초기화

CodeLLDB 확장을 제대로 쓰려면 디버깅 설정을 초기화해야 합니다.

  1. 좌측 **실행 및 디버그 탭(Ctrl + Shift + D)**을 누릅니다.
  2. ‘create a launch.json file’ 링크를 클릭합니다.
  3. 셀렉트 박스에서 LLDB를 선택합니다.
  4. “Cargo.toml이 감지되었습니다. 이 작업 영역에 대한 기본 설정을 생성할까요?”라는 팝업이 뜨면 Yes를 누릅니다.
  5. 이제 코드 옆에 중단점(빨간 점)을 찍고 F5를 눌러 디버깅을 할 수 있습니다.

이제 Rust를 책이나 공식문서 강의를보고 공부할 준비가 끝났어요. 다음에 실제 프로젝트를 진행하고나서 느낀점을 이어서 공유해보겠습니다.

댓글 남기기