Developers 공간 [Basic]/Software Basic(8)
-
[Python] Multi-process와 Multi-thread 구현하기
프로젝트를 구성할 때 다양한 프레임워크를 활용해서 구현하시는 경우, 하나의 프로세스를 통해 실행하는 경우가 많습니다. 하지만 이번 글에서는 Python으로 여러개의 프로세스(Process)와 쓰레드(Thread)를 통해 프로젝트를 효율적으로 구성하고 싶은 경우에 대해 정리해 보고자 합니다. 1. Concept a. Process & Thread b. Multi-Process c. Multi-Thread 2. Inter-Process Communication a. Message Queue b. Shared Memory c. Memory Map d. Socket 3. Synchronization a. Mutex b. Semaphore c. Conditional Variable 4. Example a. Ser..
2024.01.21 -
[Pytorch] Attention Layer 분석 및 구축하기
이번엔 다양한 논문 및 네트워크 아키텍처에서 자주 활용되는 Attention Layer를 구축한 사례에 대해서 정리해보고자합니다. 물론 내가 만드는 네트워크의 'task에 따라서', '원하는 input feature의 modal'에 따라서 다양하게 사용할 수 있겠지만, 보통 어떻게 활용되는지 혹은 왜 쓰는지에 대해 파악하고 나면 사용하기 쉬울 것이라는 생각이 듭니다. 해당 코드는 Transformer, DeTR, 3DeTR 세가지 모델을 참조했으며, 각각 코드는 아래에서 참조했습니다. Transformer : https://github.com/hyunwoongko/transformer DeTR : https://github.com/facebookresearch/detr 3DeTR : https://git..
2023.06.20 -
[OOP] Design Pattern 정리
기존에 PP(Procedural Programming, 절차 지향 프로그래밍)에서는 일부분의 코드를 고치기 위해 전체를 다시 설계해야하는 단점이 있었습니다. 따라서 유연성과 재사용성을 높이기위해 OOP(Object Oriented Programming, 객체 지향 프로그래밍)가 등장했고, Java, C++, C#과 같은 객체 지향 프로그래밍 언어들의 중요성이 강조되고 있습니다. 먼저 간단히 OOP의 3요소 5원칙에 대해 소개하겠습니다. 먼저, 3요소는 아래와 같습니다. 캡슐화(Encapsulation) : 정보를 은닉하기 위해 속성을 숨기고, 기능을 공개하는 것. 상속(Inheritance) : 부모 클래스를 재사용하고 확장하는 것. 다형성(Polymorphism) : 사용편의를 위해 하나의 객체가 Ov..
2023.05.15 -
[PyTorch] DDP(Distributed Data Parallel) 셋팅하기
이번엔 Distributed 병렬 처리를 pytorch를 활용해 구현하는 방법에 대해 다뤄보고자 합니다. 먼저 용어에 대해서 확실히 정리하고 나가자면 아래와 같습니다. Concurrent Computing (동시) : single 코어 혹은 multi 코어 에서 "동시에 처리되는 것으로 보이는 것"으로, hardware 구조로 인한 것이라기보다 software 구조로 인한 논리적 연산입니다. Parallel보다는 조금더 general한 개념입니다. Parallel Computing (병렬) : multi 코어에서 "동시에 처리되는 것"으로 hardware 구조에 의한 물리적 연산입니다. Distributed Computing (분산) : Link로 연결된 여러 개의 노드 혹은 프로세서에서 message ..
2022.12.27 -
[AWS] SMDDP(Sagemaker's DDP) 기본 환경 셋팅
클라우드 컴퓨팅이란 인터넷으로 가상화된 IT 리소스(Server, Platform, Software)를 서비스로 제공하는 것을 의미합니다. AWS와 Azure가 대중화되면서 Cloud를 Infra-structure의 가상화 개념으로만 이해하기도 하지만 Infra 뿐 아니라 platform과 Software까지 포함하는 온라인의 모든 영역을 다루는 광범위한 개념이 클라우드 컴퓨팅입니다. 이를 제공하는 다양한 클라우드 서비스는 아래와 같이 세가지로 나뉩니다. 필자는 "IPS"로 외우게 되었습니다. Infrastructure as a Service(IaaS) : 물리적으로 서버,네트워크,OS,스토리지를 가상화하여 제공 ex) AWS(Amazon Web Service), Microsoft Azure, Googl..
2022.12.27 -
[Python] Python 및 Custom 패키지 관리하기
python 프로젝트를 구성하면서 pip으로 패키지를 관리하고, 때로는 패키지를 직접 만들어 사용하기도 합니다. 이런 다양한 방법들을 정리하고자 합니다. 1. Python 관리하기 a. python과 pip 설치하기 b. 패키지 관리하기 2. 패키지 import 경로 순서 a. 1단계 sys.modules b. 2단계 built-in modules c. 3단계 sys.path (==$PYTHONPATH) 3. custom 패키지 관리하기 a. custom 패키지 구성하기 기초 b. Extension 구성하기 글효과 분류1 : 코드 글효과 분류2 : 폴더/파일 글효과 분류3 : 용어설명 글효과 분류4 : 글 내 참조 1. Python 관리하기 기본적으로 python과 pip을 다루는 것을 먼저 정리하겠습니..
2022.12.21