Computer Science 19

Strategy Pattern (전략 패턴)

전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환할 수 있도록 하는 행동 디자인 패턴입니다.한 코드에서 다르게 동작해야 하는 부분들이 존재할 때, 그 부분들을 따로 빼는 것 Ex)기존 Navigator 클래스는public class Navigator { public Route roadRoute() { // ... 도로 루트 로직 return route; }}와 같은 형태로 이루어져 있었는데, 어플리케이션이 확장되면서 대중교통, 걷기 루트가 추가됨.public class Navigator { public Route roadRoute() { // ... 도로 루트 로직 return route; } ..

Template Method Pattern (템플릿 메소드 패턴)

템플릿 메서드는 부모 클래스에서 알고리즘의 골격을 정의하지만, 해당 알고리즘의 구조를 변경하지 않고 자식 클래스들이 알고리즘의 특정 단계들을 오버라이드​(재정의)​할 수 있도록 하는 행동 디자인 패턴입니다.여러 코드에서 중복되는 부분이 존재할 때, 그 중 중복되지 않는 부분만 재정의 할 수 있도록 따로 빼는 것 Ex)DocDataMiner, CSVDataMiner, PDFDataMiner의 mine 메소드에서,rawData = extract(Doc/CSV/PDF)Data(file) data = parse(Doc/CSV/PDF)Data(rawdata)부분을 제외하면 모두 같음. 변하는 부분과, 변하지 않는 부분을 분리하여 모듈화 할 수 있으면 더 깔끔한 구조가 될 것. 템플릿 메서드 패턴은, "템플릿" ..

LLM 학습 시 내부 학습 원리

LLM 학습의 본질: 확률 분포 예측주어진 입력(문맥)에서 다음 단어(토큰)가 나올 확률 분포를 예측하는 모델ex)Input: ENFP 스타일로 바꿔줘: 나도 좋아해.Output: 헐~ 나도 진짜 좋아해~!모델은 이 Input 다음에 등장할 문장으로 "헐~"이 등장할 확률이 가장 높아지도록 조정함.  학습 과정 요약Step 1. 학습 데이터 준비 "ISTP 스타일로 바꿔줘: 나도 그거 진짜 좋아하는데! "-> "나도 좋아해" Step 2. 모델 입력 형태로 인코딩 (tokenization) 텍스트는 모두 숫자 토큰으로 바뀌고, 각 토큰마다 다음 토큰의 확률을 예측하도록 함.ex) ISTP -> 1234, 스타일 ->  0812, ... input 처리: "ISTP 스타일로 변경: 나도 그거 진짜 좋아하는..

Computer Science/AI 2025.03.28

PERT와 LoRA란 무엇인가

파인튜닝의 새로운 대세: PEFT와 LoRA란?요즘 AI 모델 파인튜닝을 이야기할 때 빠지지 않는 키워드가 있습니다.바로 PEFT와 LoRA입니다.💡 "기존 대형 모델을 빠르고 가볍게, 그리고 효율적으로 파인튜닝할 수 없을까?"이 질문에 대한 해답이 바로 PEFT (Parameter-Efficient Fine-Tuning), 그리고 그 중 하나인 **LoRA (Low-Rank Adaptation)**입니다.1. PEFT란 무엇인가요?PEFT = Parameter-Efficient Fine-Tuning(파라미터 효율적 파인튜닝) PEFT는 대형 언어 모델(LLM)의 전체 파라미터를 학습하지 않고,일부 파라미터 또는 추가 모듈만 학습함으로써 훨씬 효율적으로 파인튜닝하는 기법입니다.💡 왜 PEFT가 필요한..

Computer Science/AI 2025.03.24

네트워크 데이터 단위 및 네트워크 인터페이스

파일 입출력 (File I/O) 에서는, data의 단위가 stream data 이다. Stream data : 시작은 정해져 있으나, 끝은 정해지지 않아 연속성을 가지는 데이터 / 패킷 / 비트 등의 흐름을 의미한다 TCP: Segment IP: Packet Driver/NIC: Frame ✅ 네트워크 데이터 전송 흐름User mode 수준(= Socket 수준) : Application Process가 Socket(Device File)에 "Stream Data"를 write한다Kernel 수준 : Transport 계층에서 Stream Data에 대해 MSS(Maximum Segment Size)를 기준으로 잘라 "Segment"로 만든다. (이 행위를 "Segmentation"이라 한다)Kerne..

IP 주소

IP 주소 -> Host에 대한 식별자 IPv4 -> 32bit 2^32 = 전체 경우의 수 대략 43억 (unsigned int) IPv6 -> 128bit IP주소는 networkID와 hostId로 나뉨 ex) 192.168.60.14 192.168.60 -> networkID (24 bit) 14 -> hostId (8 bit) "netmask" ip주소 = networkId + hostId (32 bit) 192.168.60.14 AND 255.255.255.0 =  11000000 = 192.168.69.0 (networkId) 넷마스크 표기 192.168.69.0/24 -> 서브넷 서브넷 마스크 = 255.255.255.0 서브네팅 서브넷팅은 IP 주소 낭비를 방지하기 위해 원본 네트워크를 ..

네트워크 기초

Socket이란, (TCP/IP) 소켓이라고 했을 때, Kernel에서 작동하는 TCP, IP를 User Application에서 어떻게 제어 할지를 추상화한 파일 User  OSI L7~5, Application, Process --------------------------------- Kernel OSI L4~3, Transport, Network, TCP, IP  식별자: TCP - Port 번호 IP - IP 주소 --------------------------------- H/W OSI L2~1, Access, NIC 식별자:  MAC 주소MAC 주소: NIC (Network Interface Card) (유/무선 LAN카드) 에 대한 식별자 NIC이 어떤 역할을 하는지? 컴퓨터가 네트워크와 ..

2. OS Overview

운영체제의 역할User Interface (편리성)- CUI- GUI- EUCI Resource management (효율성)- HW resource (processor, memory, I/O devices, etc)- SW resource (file, application, message, signal, etc) Process and Thread management System management (시스템 보호)컴퓨터 시스템의 구성 Kernel사용자가 kernel을 직접 접근하면, OS가 하드웨어를 제어하는 데 문제가 생길 수 있음. 따라서 직접 요청하는 것이 아닌, 필요한 기능이 있다면 OS(kernel)에 요청을 하는 통로가 System Call Interface(보통 함수 형태) System ca..

Computer System Overview

OS란 무엇인가?컴퓨터 시스템 자원(HW)를 효율적으로 관리해서 사용자/응용 프로그램에게 서비스를 제공하는 소프트웨어. 컴퓨터 하드웨어 종류프로세서CPU그래픽카드 (GPU) 연산처리를 위한 하드웨어 메모리주 기억장치 (SSD, HDD)보조 기억장치 (RAM, DRAM) 저장을 위한 하드웨어 주변장치키보드/마우스모니터, 프린터 그 외 장치 프로세서중앙처리장치 (컴퓨터 두뇌)- 연산 수행- 컴퓨터의 모든 장치의 동작 제어 CPU- 레지스터, 연산장치 (데이터 부분)- 제어장치 (제어 부분) 레지스터: 프로세서 내부에 있는 메모리- 프로세서가 사용할 데이터 저장- 컴퓨터에서 가장 빠른 메모 레지스터의 종류용도에 따른 분류전용 레지스터, 범용 레지스터 변경 가능 여부에 따른 분류사용자 가시 레지스터, 사용자 불..

정규표현식 (Regular Expression)

문자 집합패턴의미a-zA-Z알파벳ㄱ-ㅎ가-힣한글0-9숫자.모든 문자열 (줄바꿈 제외)\d숫자\D숫자 제외\w밑줄 문자 포함 영,숫자 = [a-ZA-Z0-9_]\W\w 제외\sspace 공백\Sspace 공백 제외\특수문자특수문자 (메타문자 \ ^ $ . | [ ] ( ) * + ? { })\b문자 경계 (사용 예제 참고)\B\b 제외\b 사용 예제수량자수량자의미a{n,m}a가 n번이상 m번이하 반복a{n,}a가 n번 이상a{n}a가 n번a?a가 없거나 1개 = a{0,1}a+a가 1번 이상 반복 = a{1,}a*a가 0번 이상 반복 = a{0, }a*?a가 0개 = a{0}a+?a가 1개 = a{1}그룹기호의미()감싼 문자열 그룹화, 캡쳐링(?: 패턴)그룹화, 캡쳐링 x(?=)앞쪽 일치(?!)!앞쪽 일치..