그때그때 CS 정리 19

GPU 는 뭘까?

GPU 는 뭘까?개념 : 인공지능, 머신러닝, 데이터분석, 과학적 계산에 사용된다. 원래는 게임 그래픽을 빠르게 렌더링 하기 위해 개발됐고, 성능의 향상으로 GPU 성능이 7000배 상승, CPU 압살하게됨활용분야게임 및 엔터테인먼트: 실시간으로 복잡한 3D 그래픽을 렌더링하는 데 사용, VR 및 AR 애플리케이션의 고해상도 그래픽과 빠른 반응을 위해 활용인공지능 및 머신 러닝: 딥러닝 모델은 대규모 데이터셋을 사용하여 학습, GPU의 병렬 처리가 큰 역할, 수천 개의 코어를 활용하여 대량의 수학적 연산을 빠르게 처리데이터 분석 및 과학: 방대한 양의 데이터를 처리하고 분석하는 데 GPU의 병렬 처리 능력이 활용, 과학 연구에서 복잡한 시뮬레이션과 모델링 작업을 수행미디어 및 콘텐츠 생성: 비디오 파일의..

445 포트와 SMB프로토콜을 통한 공유프린터, Psexec 통신

SMB(서버 메시지 블록) 개요SMB(서버 메시지 블록, Server Message Block)는 네트워크에서 파일, 프린터, 시리얼 포트 등 리소스를 공유하기 위해 사용되는 프로토콜입니다. 주로 Windows 운영 체제에서 널리 사용되며, 클라이언트-서버 모델을 기반으로 동작합니다.주요 기능 및 사용 사례파일 공유네트워크 상에서 여러 사용자가 동일한 파일에 접근할 수 있게 함.프린터 공유여러 사용자가 네트워크에 연결된 프린터를 공유하여 사용할 수 있게 함.네트워크 탐색클라이언트가 네트워크에서 공유된 폴더, 프린터 등을 탐색할 수 있게 함.도메인 인증네트워크 상의 사용자 인증과 권한 부여를 지원함.원격 명령 실행 (PsExec 활용)SMB를 통해 PsExec와 같은 도구를 사용하여 네트워크 상의 원격 컴..

OS에서 알아야 할 네트워크 설정 모음

인터넷 신호 교환 순서ISP 연결ISP에서 서비스 제공 (광케이블, ADSL, 위성 등)모뎀을 통해 외부 네트워크와 연결모뎀아날로그 신호를 디지털 데이터로 변환인터넷 연결의 첫 번째 지점라우터 연결모뎀과 연결하여 인터넷 신호를 여러 장치에 분배Wi-Fi 및 이더넷을 통한 내부 네트워크 구성IP 주소 할당DHCP를 통해 자동 IP 주소 할당네트워크 상의 각 장치가 서로를 인식하고 통신 가능데이터 전송DNS를 통해 웹사이트 이름을 IP 주소로 변환HTTP/HTTPS를 통한 웹 요청과 데이터 수신게이트웨이와 라우팅기본 게이트웨이(라우터)를 통해 데이터를 인터넷으로 전송여러 네트워크 노드를 거쳐 데이터가 목적지에 도달DNS 서버개념사람이 읽기 쉬운 도메인 이름(예: www.example.com)을 컴퓨터가 이해..

나만의 코드 규칙 정립

요약 코드 규칙파이썬에서 네이밍 컨벤션(변수 이름) PEP 8 으로 한다.타입헌팅을 통해 선언해, 가독성, 유지보수 높인다.변수 어노테이션 통해 선언해, 가독성, 유지보수 높인다.PEP 8자세한 내용 : https://peps.python.org/pep-0008/들여쓰기 규칙은 VS코드 쓰면 자동으로 조정됨코드 작성 후 black, YAPF 모듈을 통한 자동 수정pip install blackblack your_script.py타입헌팅파이썬은 자료형을 선언 안해도 되는데, 자료형을 선언하는걸 타입헌팅이라고 함함수 타입헌팅 (PEP 484) 변수 어노테이션(PEP 526) 정적 타입 검사 도구(MyPy 등)와 통합하여 코드에서 타입 관련 오류를 미리 발견할 수 있습니다변수 이름 규칙경로 변수는 앞에 pa..

스레드와 프로세서의 구조적 차이

배경병렬 연산을 하기 위해 알아보다가 파이썬 모듈인 ProcessPoolExecutor , ThreadPoolExecutor를 알게됨처음에 의도한 병렬 연산은 ProcessPoolExecutor 였고, ThreadPoolExecutor은 i/o작업에 특화됐다는걸 알수있었다.이런 용도의 차이를 만들어 내는 구조적 차이를 알고자 한다. 용어정리프로그램프로그램이 실행되면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 컴퓨터 메모리(Ram)에 적재된다는 뜻이다.프로세스: 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태, 여러 크롬창중 하나를 닫으면 프로세스 하나가 닫힌다.스레드의 탄생 : 프로세스 하나만을 사용하기 때문에 다운이 완료될때까지 하루..

파이썬 병렬 스레드 연구

배경 및 결론이전 포스트에서 ProcessPoolExecutor'가 ThreadPoolExecutor보다 압도적인 성능을 보였다. 그렇다면 ThreadPoolExecutor는 언제 사용하는게 좋은가? 결론적으로 ThreadPoolExecutor가 ProcessPoolExecutor보다 유리한 상황은 주로 I/O 바운드 작업이나 덜 CPU 집약적인 작업을 수행할 때이다.1. I/O 바운드 작업작업 특성: 파일 읽기/쓰기, 네트워크 요청, 데이터베이스 통신 등의 I/O 바운드 작업은 실제 CPU 계산보다 데이터를 읽거나 쓰는 데 시간이 더 많이 소요됩니다. 이러한 작업에서는 CPU 사용률이 높지 않기 때문에 프로세스 간의 오버헤드가 불필요할 수 있습니다.효율성: 스레드는 프로세스에 비해 생성 시간과 자원 사..

파이썬 병렬 실행 연구

배경내 CPU가 6코어이기 때문에 이를 최대한 활용해보고 싶다.ThreadPoolExecutor로 병렬실행 확인해보기import concurrent.futuresimport timedef long_running_task(): time.sleep(1)def run_parallel_tasks(max_workers): print(f"Running with {max_workers} workers...") start_time = time.time() # 시작 시간 기록 with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor: # futures 객체 리스트를 생성 for _ in ..

비동기 프로그래밍(asyn,aiohttp, aiofiles,aiomysql)은 뭘까?

배경 : 언어모델 동작 시간이 너무 길어서, 더 빠르게 할수 있는 방법이 있나 찾아보다 봤다.결론적으로 내가 찾던것과 관련은 없었지만, 코드를 효율적으로 실행하는 중요한 기술. 뭔데?프로그램이 I/O 작업은 CPU 등에 비해 매우 느리기 때문에 이 작업을 기다리는 동안 다른 작업을 못하는건 비효율적즉 결과를 기다리는동안 다른 작업도 가능하게 해서 전체적인 프로그램의 효율성을 향상특히 I/O 바운드 작업(예: 네트워크 요청, 파일 입출력, sql 비동기연산 등)을 처리할 때 유용 구체적인 예 1( 비동기 HTTP 요청)import asyncioimport aiohttp # 비동기 HTTP 클라이언트async def fetch_data(url): print("HTTP 요청 시작:", url) a..

벡터 데이터베이스

배경 : pdf-rag 제작에 chromadb를 사용했는데, 이유가 궁금하다. 알고보니 chromadb는 벡터데이터베이스.그렇다면 벡터 db는 뭐고 어디에 쓸까? 벡터 데이터베이스(Vector Database)일반적인 데이터베이스는 텍스트, 숫자, 날짜 등의 형태의 데이터를 저장하고 검색하는 데에 사용됨벡터DB는 말그대로 벡터를 저장하는 데 사용되는 데이터베이스로서 여기에는 텍스트나, 이미지와 같은 비정형 데이터를 벡터로 바꾸어서 저장하게 된다.한편 이렇게 다양한 데이터를 저장하는 건 좋으나 정작 데이터를 찾으려 할 때 새로운 해결책이 필요하게 되었다. 대용량의 문서, 이미지, 심지어는 동영상과 같은 데이터는 어떻게 검색할 것인가하는 문제를 해결하기 위해 벡터DB가 등장하였다. 결과적으로 현재까지 비정형..