목록분류 전체보기 (99)
Ssul's Blog
🧠 1. 전체 구조 개요GPU는 다음과 같이 계층적으로 구성되어 있습니다.GPUGPU ┣━━ SM0 │ ┣━━ Block0 │ │ ┣━━ Thread0 │ │ ┣━━ Thread1 │ │ ┣━━ Thread2 │ │ ┗━━ Shared Memory (Block0 전용) │ ┣━━ Block1 │ │ ┣━━ Thread0 │ │ ┣━━ Thread1 │ │ ┣━━ Thread2 │ │ ┗━━ Shared Memory (Block1 전용) │ ┗━━ Register File, L1 Cache │ ┃ ┗━━ Global Memory (VRAM, GPU 외부 DRAM)GPU ┣━━ 여러 GPC ..
# 1. 브랜치 구조main # 2. 브랜치별 역할main실제 운영 서비스release → mainProduction태그 기준 배포releaseQA / 검수 / 버그 수정develop → release → mainStaging코드 동결 후 QAdevelop통합 개발feature/* → developDev신규 기능 통합feature/*개인 작업develop에서 생성로컬/Preview기능 완료 후 PR # 3. 운영규칙3-1. 브랜치 네이밍타입예시설명기능feature/login-page신규 기능 개발버그fix/user-auth-errorQA 중 버그 수정긴급hotfix/payment-timeout운영 긴급 대응 3-2. 커밋 컨벤션feat: 기능 추가fix: 버그 수정refactor: 코드 리팩토링doc..
Git은 단순히 "저장"하는 도구가 아니라, 변경 이력을 단계별로 관리하는 시스템입니다.개발자가 코드를 수정하고 협업할 때 반드시 거치는 4단계를 먼저 이해해봅시다.1) 워킹 디렉토리 (Working Directory)내 컴퓨터에서 직접 수정 중인 파일들이 있는 곳입니다.아직 Git에 반영되지 않은 상태라 git status를 치면 modified 로 표시됩니다.👉 예시 git status2) 스테이징 영역 (Staging Area)여러 파일을 수정했더라도, 이번 커밋에 포함할 파일만 골라낼 수 있는 임시 대기실입니다.git add 명령으로 워킹 디렉토리에서 스테이징 영역으로 옮깁니다.👉 예시 git add file.txt # 특정 파일만git add . # 모든 변경사항3) ..
AI를 공부하다보니, 자연스럽게 GPU, 반도체를 공부하게 된다.그리고 주식 투자도 하다보니, 자연스럽게 반도체를 어떻게 만드는지까지 공부를 하게 된다.반도체 초보가 쉽게 정리해 보겠다. 1. 전기 원리 이해 전압(Voltage): 전자를 밀어주는 “압력”.전류(Current): 전자의 “흐름” 양.저항(Resistance): 흐름을 방해하는 정도.전자 흐름 방향: 전자는 (-) → (+) 방향으로 실제 이동합니다. (우리가 회로에서 쓰는 “전류 방향”은 관례상 반대) 2. 도체/부도체/반도체 구분 도체: 자유전자가 많아 쉽게 흐름. (구리, 알루미늄)부도체: 전자가 거의 묶여 있어 흐름 어려움. (유리, 고무)반도체: 그 사이. “상황에 따라” 흐르도록 만들 수 있음 3. 최외곽 전자 이해하고, 그래서..
0. 요약- Vercel에 프론트앤드 서비스 배포(예: 서비스명.vercel.app)- AWS Route53에서 서비스명.com 도메인 구매- 서비스명.com으로 서비스 접속하기 1. A, CNAME이해하기1-1. A레코드란?A 레코드(Address Record)는 “도메인 이름을 정해진 IPv4 주소로 바로 연결한다”는 뜻입니다. 브라우저가 서비스명.com를 요청하면 DNS는 즉시 76.76.21.21 같은 숫자 주소를 돌려주고, 사용자는 그 IP가 붙어 있는 서버로 곧장 접속합니다.루트 도메인(example.com), mail 서버, 고정 IP를 쓰는 웹·API 백엔드처럼 IP가 변하지 않거나 내가 직접 관리하는 서비스에는 A 레코드 한 줄로 끝내는 것이 가장 단순하고 빠릅니다. 또 동일한 이름에 M..
#1. CPU와 GPU 비교- core: core내부에 여러개 들어 있는 ALU(계산 전용도구)- control(제어유닛): 계산을 언제할지 스케쥴, 배분 관리- L1 cache: core연산에 사용하기 위한 가까운 메모리- L2 cache: 약간 크지만 덜 가까운 메모리- L3 cache: 약간 더 크지만 조금 더 먼 메모리- DRAM: 외장 메모리, GPU DRAM은 비싼거 사용(코어가 많아서 빨라야함) CPU는 복잡하고 다양한 작업을 빠르게 수행 > 코어랑 제어유닛이 큼. 그리고 근처 cache가 커야함 > 트렌지스터 많아야 함GPU는 단순하고 많은 작업을 빠르게 수행 > 코어가 가변고, 단순작업 잘함 > 코어가 작은대신 엄청 많음CPU는 개별 코어의 성능을 높이는 방향으로 발전. GPU는 코어의 ..
인터넷 검색이나, AI검색을 통해서 AI모델 학습/추론하는 코드를 찾아보게 되면 다양한 방식이 존재한다.어쩔땐 pipeline, 어쩔땐 model.generate()/decode, 또 어쩔때는 model(input_ids)를 넣는 방식까지...매 검색 코드마다 쓰는 방식이 다르니, 한번 정리하고, 나만의 AI학습 코드를 고정해야 하겠다. 이번 글에선 “토크나이저 → 모델 → 디코딩” 흐름을 기준으로1️⃣ pipeline (원스톱)2️⃣ generate (표준)3️⃣ manual forward (로짓 해킹)세 등급으로 쪼개 봤다.코드는 전부 복붙-실행 되도록 적었으니 — 마음에 드는 루틴 하나 골라 바로 써 보시길! #0. 공통- 설치해주시고 pip install -q transformers acceler..
ios앱을 개발중이다. 이번 목표는 아래와 같다. 유튜브 앱에서 공유하기 버튼을 누른다. 공유 가능한 앱에 내 앱아이콘이 등장한다.해당 앱 아이콘을 클릭하면, 내 앱으로 이동한다.내앱에 들어가서, 내가 원하는 메뉴를 띄우고, 공유하는 유튜브 링크를 붙여넣는다. 위 3가지 포인트가 완성되어야 한다. 어떻게 해야 할까? #1. ShareExtension(내 앱 아이콘이 등장 > 내 앱으로 이동 전까지)ShareExtension은 다른 앱에서 공유하기 눌렀을때, 내 앱아이콘이 뜨고, 그걸 클릭했을때 연결해주는 역할을 하는 녀석임. 1-1. Xcode → File ▸ New ▸ Target ▸ iOS ▸ Share Extension클릭- 적절한 이름을 설정하고 추가1-2. bundle Identifier설정- ..
요즘 텍스트 데이터는 마크다운과 이모지의 향연이다.당연히 해당 텍스트 데이터를 그대로 잘 표현해야 한다. 그럼 SwiftUI는 알아서 잘 표현 할 것인가?SwiftUI의 마크다운 표현 가능 여부를 알아보자. 후보#1. Text- 별도의 라이브러리 설치없이 사용가능하다- iOS 15부터 가능하다import SwiftUIstruct MarkdownTextView: View { let markdownString = """ # 제목 1 ## 제목 2 **굵은 글씨**, *기울임*, `코드` - 리스트 아이템 1 - 리스트 아이템 2 [링크](https://www.apple.com) """ var body: some View { ScrollView { ..
1. StateObject- view가 인스턴스를 생성하고 소유함- 보통 ViewModel이 해당 뷰에서만 쓰이거나, 상위뷰에서 초반에 전역으로 사용할 인스턴스 생성할때 사용 struct MyView: View { @StateObject var viewModel = MyViewModel()}//상위에서 생성해서 보낼때 사용struct TmpApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate @StateObject var container: DIContainer = .init(services: Services()) var body: some Scene { WindowGroup { ..