반응형
많은 개발자와 연구자들이 PyTorch를 이용해 Python 환경에서 딥러닝 모델을 개발하고 학습합니다. 하지만 실제 프로덕션 환경이나 고성능 애플리케이션에서는 C++ 기반의 애플리케이션에 모델을 통합하고 싶을 때가 있습니다. 이때 Python 환경 없이도 모델을 로딩하고 추론할 수 있도록 해주는 것이 바로 TorchScript 입니다.TorchScript를 사용하면 Python으로 학습한 PyTorch 모델을 별도의 .pt 파일 형태로 내보내고, 이 파일을 C++ LibTorch 환경에서 로딩해 추론할 수 있습니다. 이 글에서는 Python에서 TorchScript 모델을 만드는 방법, 그리고 C++에서 이를 로딩해 추론하는 과정을 단계별로 살펴봅니다. 또한 단순한 완전연결 모델에서 한 걸음 더 나아가..
안녕하세요! 지난 글에서는 OpenCL 커널 작성법과 빌드 과정을 살펴보았습니다. 이제 커널에서 다룰 데이터가 어떻게 GPU나 CPU 디바이스 메모리에 올라가는지, 즉 OpenCL 메모리 모델과 그 핵심 요소인 버퍼(Buffer)와 이미지(Image)에 대해 알아볼 차례예요. 또한 커널에 파라미터(인자)를 전달하는 다양한 패턴에 대해서도 간단히 짚어보겠습니다.이번 글에서는 다음 내용을 다룹니다.OpenCL 메모리 모델 개요버퍼(Buffer)와 이미지(Image)의 특징과 사용 예커널 파라미터 설정 방법 심화CUDA의 메모리 관리 방식과 비교추가 참고 자료 (유튜브)1. OpenCL 메모리 모델 개요OpenCL 프로그램에서는 호스트(Host)가 디바이스(Device)에 연산을 시킵니다. 이 때, 데이터를 ..
이번 글에서는 CMake를 사용하여 CUDA 기반의 GPU 가속 응용 프로그램을 빌드하고 설정하는 방법을 알아보겠습니다. GPU 프로그래밍은 고성능 계산, 머신 러닝, 그래픽스 등 다양한 분야에서 중요한 역할을 합니다. CMake를 활용하여 CUDA 코드를 효율적으로 관리하고 빌드 시스템에 통합하는 방법을 살펴보겠습니다.CUDA와 CMake의 통합CUDA는 NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼으로, GPU를 활용하여 계산을 가속화할 수 있습니다. CMake는 CUDA를 지원하기 위한 다양한 기능을 제공하며, 이를 통해 CUDA 코드와 C++ 코드를 함께 빌드할 수 있습니다.CMake에서 CUDA 활성화CMake에서 CUDA를 사용하기 위해서는 프로젝트 설정에서 LANGUAGES에 CUDA를 추가합니..
지난 글(2편)에서는 LibTorch 환경을 설정하고 C++에서 간단한 텐서를 생성해 출력하는 "Hello LibTorch" 예제를 실습했습니다. 이제 본격적으로 텐서 연산을 조금 더 다뤄보며, C++에서 PyTorch 텐서와 유사한 감각으로 연산을 하는 방법을 익혀봅시다.이번 글에서는 다음을 다룹니다.텐서 생성 방법과 다양한 초기화 방식기초적인 텐서 연산(덧셈, 곱셈, 행렬 연산 등)텐서 모양(Shape) 확인 및 변경GPU(CUDA) 사용을 위한 기초 개념 (CUDA 지원 환경일 경우)작은 예제 코드를 통해 실습이 과정을 통해 C++에서도 Python PyTorch API와 크게 다르지 않은 직관적인 방식으로 텐서를 다룰 수 있음을 확인할 수 있습니다.텐서 생성하기LibTorch에서는 PyTorch와..
앞선 글들에서 우리는 러스트의 기본 문법, 소유권 및 빌림 규칙, 컬렉션과 이터레이터를 다루며 러스트의 전반적인 프로그래밍 감각을 익혀왔습니다. 이제 조금 더 러스트다운 코드를 작성하기 위해 러스트에서의 구조체(Struct), 열거형(Enum), 그리고 C++와는 다른 문맥에서 강력한 기능을 제공하는 패턴 매칭(Pattern Matching), 마지막으로 모듈(Module)과 크레이트(Crate)를 통한 프로젝트 구조화 방법을 살펴보겠습니다. C++에 익숙하다면 클래스, enum, 네임스페이스(namespace), 헤더/소스 파일 구조와 비교하며 러스트에서는 어떤 식으로 코드 조직과 타입 정의를 하는지 감을 잡을 수 있을 것입니다.구조체(Struct) 정의하기C++에서 class나 struct를 사용해 ..
이번에 소개할 표현은 "The Ball is in Your Court"입니다. 이 표현은 책임이나 결정권이 현재 상대방에게 있다는 의미로, 소프트웨어 개발에서 협업이나 의사결정 과정에서 자주 사용됩니다.1. 표현의 의미"The Ball is in Your Court"는 테니스나 배드민턴 같은 스포츠에서 유래한 표현으로, "공이 상대방의 코트에 있다"는 말에서 비롯되었습니다. 이 표현은 다음 행동을 취하거나 결정을 내려야 할 사람이 상대방임을 나타냅니다.예:"나는 내가 할 일을 끝냈으니 이제 너의 차례야."→ "I’ve completed my part; now the ball is in your court."2. 소프트웨어 개발과의 연관성이 표현은 소프트웨어 개발의 협업 과정에서 다양한 상황에 사용될 수 ..
지난 글에서는 2D 데이터 처리와 비동기 스트림(Asynchronous Streams)을 통해 Host와 Device 간 연산이 겹칠 수 있음을 확인했습니다. 이제는 GPU 메모리 계층을 살짝 들여다보고, 성능 최적화를 위해 왜 이러한 구조가 존재하는지 알아볼 차례입니다. 오늘 다룰 주제는 Shared Memory와 Constant Memory라는 특별한 메모리 공간들입니다. 이들은 단순한 글로벌 메모리(Global Memory) 접근보다 훨씬 더 빠르거나 특정 상황에서 효율적인 접근을 가능하게 해줍니다.메모리 계층 구조 이해하기GPU 메모리는 단순하지 않습니다. 성능을 극대화하기 위해 다양한 메모리 종류가 존재합니다.Global Memory(전역 메모리): 우리가 지금까지 cudaMalloc로 할당한 ..
미국 시민권 인터뷰, 왜 중요한가?미국은 이민자로 이룩한 나라다 보니, 시민권 절차 또한 이민자의 문화적·사회적 적응 여부를 꽤 중요하게 생각한다. 시민권 인터뷰는 단순히 서류상 조건을 확인하는 것뿐 아니라, 미국이라는 나라의 기본 원칙과 가치를 이해했는지, 영어로 어느 정도 소통 가능한지, 법적·도덕적 기준을 충족하는지를 확인하는 단계다.역사적으로는 18~19세기엔 법정에 출두해 간단히 선서하는 식이었으나, 20세기 중반부터는 많은 이민자들이 몰려오면서 체계적인 평가 절차가 마련되었다. 지금 우리가 치르는 인터뷰는 오랜 기간 다듬어진 제도다. 이 과정을 제대로 이해하고 준비하면, 한결 수월하게 통과할 수 있다.인터뷰 당일의 흐름: 단계별로 살펴보기1. 도착 & 대기사전 답사: 인터뷰 장소(USCIS F..
이번 글에서는 ‘네이버 블로그’, ‘브런치’, ‘유튜브’, ‘티스토리’, 그리고 추가로 ‘미디엄(Medium)’이라는 다섯 가지 플랫폼을 각각 분석하고 비교해 보겠습니다. 국내외 콘텐츠 크리에이터나 퍼스널 브랜딩을 고민하는 이들이, 각 플랫폼별 특징을 파악하고 자신의 목표에 맞는 전략적 선택을 하는 데 도움이 되길 바랍니다.1. 네이버 블로그: 국내 기반, 친숙한 진입 플랫폼네이버 블로그는 국내 이용자가 많고 검색 노출이 쉬워, 국내 독자를 대상으로 콘텐츠를 발행하기에 가장 직관적이다. 상호 소통을 통해 방문자를 늘리기 쉽고, 단순한 사용법으로 초보자에게도 부담이 없다. 다만 광고 수익 구조가 낮은 편이며, 경쟁이 치열한 키워드 시장에서 살아남으려면 꾸준한 운영이 필수다.장점친숙하고 쉬운 시작국내 검색 ..
리눅스 환경에서 grep는 텍스트 검색의 표준이라 할 만한 명령어입니다. 오랜 역사를 지닌 만큼, 다양한 옵션과 강력한 정규표현식 패턴 매칭 기능을 갖추고 있습니다. 심지어 단순한 문자열 검색부터 시작해 방대한 로그 파악, 복잡한 텍스트 처리까지 grep는 다양한 시나리오에서 활약하죠.이 글에서는 grep가 무엇인지, 어떻게 태어났고 발전했는지, 다른 텍스트 검색 툴들과 어떻게 다른지 비교한 후, 기초에서 고급까지 실제 커맨드라인 예제와 함께 차근차근 살펴보겠습니다. 또한, 효율성을 높이기 위한 alias 설정과 다른 툴과의 연계 방법도 다룰 예정입니다.grep의 기원과 필요성탄생 배경:grep는 "Global Regular Expression Print"의 약자로, 정규표현식을 통해 파일 내 텍스트 패..