웹 개발 A to Z: 레고처럼 조립하는 현대 웹 기술들

웹 개발을 하기 위해 필요한 기술들을 한눈에 담아보려고 클로드에게 정리해달라고 했다. 마치 여러 명의 직원들이 각자 맡은 일을 하면서 하나의 회사를 운영하는 것처럼 모든 기술이 엮여있다. 기술마다 트랜드가 있겠지만, 우선 초보자들도 쉽게 이해할 수 있는 수준으로 웹 사이트를 만들기 위해 필요한 대표적인 기술들에 대해 서로 상관관계를 적어보았다. 프론트엔드 (사용자가 보는 부분):React: 레고 블록처럼 웹사이트의 부품들을 만들어서 조립할 수 있게 해주는 도구예요. 예를 들어, 인스타그램의 게시물 하나하나가 다 React로 만든 부품이에요.Redux: React로 만든 부품들이 서로 정보를 주고받을 때 사용하는 우체통 같은 거예요. 모든 정보를 한 곳에 모아두고 필요한 부품에게 전달해줘요.Bootstr..

[PyTorch] contiguous 연산의 필요성, Grad strides do not match bucket view strides

문제 Grad strides do not match bucket view strides. This may indicate grad was not created according to the gradient layout contract, or that the param's strides changed since DDP was constructed. 위와 같이 에러가 나면서 학습이 안되는 상황이 발생. 해결방법 위와 같이 grad stride 관련 이슈가 난다면, 본인 환경이 ddp 학습인지 체크해보고, 아래와 같이 transpose() 연산이나 permute() 연산에 .contiguous() 를 꼭 붙여준다. transpose().contiguous() permute().contiguous() 이유 즉,..

[Linux] 기본 명령어

리눅스에서 자주 사용하는 명령어를 정리해보았다. ls (List segments) 현재 위치의 파일 목록 조회하기 위해 사용 ls -l : 파일의 상세정보 ls -a : 숨김 파일 표시 ls -t : 파일들을 생성시간순(제일 최신 것부터)으로 표시 ls -rt : 파일들을 생성시간순(제일 오래된 것부터)으로 표시 ls -f : 파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시 ('/' : 디렉터리, '*' : 실행파일, '@' : 링크 등등,,,) cd (Change directory) 디렉터리 이동할 때 주로 사용하는 명령어 cd 디렉터리 경로 : 이동하려는 디렉터리로 이동 cd ~ : 홈 디렉터리로 이동 cd / : 최상위 디렉터리로 이동 cd . : 현재 디렉터리 cd .. : 상위 디렉터리..

[Linux] 전체 프로세스 메모리 사용량 상위 10개 확인하기

아래 명령어는 현재 실행중인 모든 프로세스의 메모리 사용량으로 정렬 후 PID와 각종 메모리 사용률 및 프로세스를 상세하게 보여준다. $ ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11 참고자료 : https://www.runit.cloud/2020/11/linux-process-memory-usage.html 리눅스 메모리 사용 프로세스를 확인하는 2가지 방법 리눅스 서버에서 프로세스의 메모리 사용량을 확인하기 위한 방법을 알아보고, 아래 실습 내용을 통해 쉽게 사용할 수 있습니다. 커맨드 라인에서 ps와 top 명령어를 사용해서 메모리 사용량에 www.runit.cloud

[PyTorch] 모델 파라미터 일부만 업데이트 하기

pre-trained model의 일부분만 바꿔서 모델을 학습시키려고 할 때 pre-trained model의 파라미터 일부를 가져와 현재 모델의 state dict을 업데이트 하여 학습해야한다. 즉, pre-trained model의 파라미터를 로드하고, 현재 모델에 덮어 씌워주는 과정이다. 먼저, 아래와 같이 pre-trained model과 현재 model을 각각 로드해준다. pretrained_dict = torch.load(PATH) # pretrained 모델 static dict 로드 model_dict = model.state_dict() # 현재 모델 state dict 로드 그 다음 아래와 같이 pre-trained model의 값들 중에서 현재 model의 state dict과 일치하..

[TFLite] TensorFlow Lite 개념

TensorFlow Lite 개념 TensorFlow Lite는 모바일과 IoT 기기에 딥러닝 모델을 배포하고 추론하기 위해 구글에서 만든 라이브러리이다. 간단히 말하자면, TFLite를 이용하여 TensorFlow 모델을 안드로이드, iOS, 임베디드 기기에서 사용할 수 있도록 모델을 변환할 수 있다. 이러한 기기에서 사용하기 위해서는 컴퓨팅 리소스가 제한적이기 때문에 이를 위해 TFLite는 모델을 경량화해준다고 보면 된다. TFLite는 모델을 변환하는 Converter와 변환된 모델을 실제로 동작시키는 Interpreter로 이루어져있다. Converter는 파이썬 개발환경에서 사용하고, Interpreter는 사용하려는 기기와 동일한 환경에서 사용된다. 그리고 중요한 특징 중 하나는 양자화를 지..

[ONNX] Brevitas, QAT 모델을 Standard ONNX 모델로 생성하는 라이브러리

Quantization Aware Training로 학습된 모델은 QuantConv2d, QuantLinear 등의 layer 가 생성되는데 이를 Standard ONNX로 변환 시켜주는 Brevitas 라이브러리가 있다. FAQ(https://github.com/Xilinx/brevitas#faq) 를 보면 아직 알려진 이슈들은 많다. https://github.com/Xilinx/brevitas GitHub - Xilinx/brevitas: Brevitas: quantization-aware training in PyTorch Brevitas: quantization-aware training in PyTorch. Contribute to Xilinx/brevitas development by cre..

[Linux] locate 명령어

필자는 locate 명령어를 리눅스 환경에서 굉장히 자주 쓰고 있다. locate 명령어에 대해 더 자세히 알아보고자 한다. locate 명령어는 아래와 같이 사용하며, test_file이 어디에있는지 알려준다. locate test_file locate 명령어가 파일을 빠르게 검색해주는 이유는 검색DB를 미리 생성하기 때문이다. 따라서 locate 명령어를 처음 사용한다면 아래와 같이 DB를 업데이트 시켜준다. (pdatedb 작업은 크론(cron)에 등록되어 있어서 매일 새벽에 자동으로 실행됨) sudo updatedb 그런데 이는 방금 자신이 삭제한 파일도 검색이 되기 때문에 문제가 발생한다. 이런 문제를 피하고 싶다면 검색 전에 DB를 업데이트 하는 것을 추천한다. 참고자료 : https://wi..

[NVIDIA TAO Toolkit] TAO Toolkit 개요

NVIDIA TAO Toolkit을 이용하여 사전 훈련된 NVIDIA 모델에 custom dataset을 적용하여 Computer Vision(이하 CV) 모델을 만들거나 Conversational AI(이하 Conv AI) models을 만들 수 있는 툴킷이다. 비전 분야에서는 주로 object detection, image classification, segmentation, keypoint estimation 등의 모델들을 fine-tuning 할 수 있다. 특히 pre-trained 모델에 새로운 클래스를 추가할 수도 있고, 다양한 케이스에 맞게 다시 학습 시킬 수 있으며, TAO Toolkit은 학습과 관련된 hyperparameter들을 수정하여 custom AI model을 생성할 수 있다...

[Linux] 파일 개수 및 디렉토리 개수 세기

리눅스 환경에서 현재 폴더의 파일 개수를 세는 명령어는 아래와 같다. ls -l | grep ^- | wc -l 디렉토리의 개수를 세는 명령어는 아래와 같다. ls -l | grep ^d | wc -l 참고로 ls 는 현재 디렉토리의 내용을 확인 할 수 있으며, grep 명령어는 파일 내용에서 특정 문자열을 찾을 때 사용하는데, ^ 라는 것이 붙으면 문자열 라인의 처음을 보겠다는 뜻이다. 그리고 wc 명령어는 파일 또는 표준입력의 줄 수를 출력한다. 뜻을 알면 잘 외워진다.