분류 전체보기 124

WHERE DID ALL THE MEMORY GO?

참고: ZeRO: Memory Optimizations Toward Training Trillion Parameter Models 공부한거 나중에 보기 편하게 적는다.어떤 특정 딥러닝 모델을 학습시킬 때 매우 많은 메모리가 필요하다 그래서 요즘엔 32bit 실수 FP32 를 FP16으로의 mixed-precision training을 이용한 최적화가 많이 진행된다. 1.5B 딥러닝 모델은 파라미터(가중치 행렬)은 FP16으로 3gb의 메모리를 필요로 한다. 32gb의 single gpu에서 이 모델을 학습 시킬 수 없다. 어떤 부분에서 이러한 메모리 누수(라고 표현하는게 옳은지는 모르겠지만)가 발생하는 것일까?(밑에 내용은 GPT로 번역시킨 것을 적당히 수정) 1. Model States: Optimiz..

o3는 codeforce live 문제를 도와줄까

2월 1일 기준 gpt o3가 나왔고 open ai 자기들 말로는 코드포스 2700점이라고 한다.내가 낸 플레4 constructive 문제 4분컷하더라https://www.acmicpc.net/source/share/998cd3f7568d4ebbaea56fc9f0a280ad어쨌든 이제 잘하는거 같은데...마침 오늘 라이브 코포가 있었고 live문제들에 관한 질문은 무시하거나 답변하지 않도록 내부 로직짜면 좋을거 같아서 물어봤다.말은 잘하는데 실제로 긁어서 물어보니까 별 검증 안하는거 같더라근데 딥2 A번도 꽤 오래 걸리던데... 그냥 에디토리얼 학습시켜서 잘한다고 뻥친건가 싶기도 하고.아니 근데 라이브 코포 시간대에 링크 들어가서 문제 매칭시켜서 유사도 높으면 답변 거절하게 만드는거 엄청 쉬울거 같은데..

Pipeline Parallelism - Weight Stashing / Vertical Sync

PP -> layer 단위로 모델을 쪼개서 적당히 컴퓨팅 자원을 나눠서 분산 학습을 하자. layer로 나눠봤자, layer별로 종속성이 있어서 분산 학습을 하는게 의미가 있을까 싶은데, batch로 쪼개고 학습한다고 생각하면 아이디어를 얻을 수 있다. 높은 Machine으로 갈 때마다 다음 layer로 생각하면 편하다. 이렇게 하면 layer끼리의 종속성도 해결하고, forward pass와 backward pass의 순서도 맞춰지면서 분산 컴퓨팅의 효과를 볼 수 있다. 세부적인 구현 방식인 Weight Stashing / Vertical Sync에 대해 생각해보자.(둘 다 옛날 방식이라 요즘엔 안 쓴다고 한다.) scheduling의 관점에서는 위의 그림이 최적이다. 저걸 잘 구현해야 하는데, 순차적..

Non-Autoregressive (NAR)

Attention / Transformer의 등장으로 엄청난 발전이 있었는데, 그러한 autogressive한 것들의 몇 가지 단점들을 처리하고자 나온 개념인거 같다.  https://nar-tutorial.github.io/acl2022/NAR-ACL%202022.pdf위 글을 보고 공부한 내용이다.  대충 입력에서 출력으로 생성할 때 출력에서 생성된 부분들도 recursive / repetitive하게 이용하여 다음 출력을 이용한다는 느낌이다.Question: What type of food do you like? Answer: I -> I like -> I like spicy -> I like spicy food like를 만들 때 이전 문장인 I가 영향을 주고, 마찬가지로 spicy를 만들 때 이..

kmo 2024 중등 1차 예선 풀이

https://www.kmo.or.kr/kmo/sub07.html 기하 빼고 풀어봤다.경시문제라 뇌깨는 용도로 좋은거 같다.중학교꺼라 쉬운거 같은데 제일 어려운 문제도 수능 준킬러 4점 정도 난이도고 대부분 수능 쉬운 4점 난이도인 것 같다. 아 물론 이건 내 지식수준에서 기준이고 (날먹한게 몇 개 있다.)  발상 난이도만 말한 것 이다.    아래는 재밌는 문제들 후기더보기정답:16번사이드로 날먹하면 0번 돌려서 같은 것 44개, 1,2 번돌려서 같은 것 2개씩이라48/3 =16으로 날먹할 수 있다.      더보기(x+y)^2+(y+z)^2+z^2=2n으로 바꾸고x+y=A,y+z=B,z=C로 두면(1,1,0) (0,1,1) (0,0,1)은 너무 당연하게도 linearly independent한 vet..

Math 2025.01.13

Purpose of Regularization

Big model (Like LLM...) 에서 training data에서의 overfitting은 신경쓰지 않는다... 사실 신경쓰지 않는다기보다는 상관이 없다. small model들에서는 overfitting 될 수록 입력 데이터를 "암기" 하는 식으로 가게 된다. 즉 input들의 기본적인 특성을 학습하기 보다는 input과 output을 1대1 매칭하게 된다. 그런데, 모델이 커지게 되면, 모델은 전체적인 특성위주로 학습하게 된다.Regularzation으로 일반적인 특성의 학습을 이어지게 하면 overfitting은 오히려 좋다.gpt는 인간이 만들어낸 신이다..gpt로 공부하는 나 자신..

CSE4120 서강대학교 기초컴파일러 Prj3

실제 c가 아니라 제한사항이 있는 mini-c 상에서 optimization생각들 모음마지막 프젝을 만점 받지는 못했지만, 할 때 생각한 아이디어들 모음따로 유명한 최적화 방법에 대한 공부는 하지 않았다. 교수님이 코드/tc는 공유하지 말라 하셔서 아이디어 정도만 적는다. 사실 오래 고민한게 아까워서 적어 놓는다. 기본적인 구현은 RD,LA,AE를 통한 CP,DCE,AE를 다 하고 나서의 이야기이다. 1. mem2reg 하는 방법포인터는 항상 mem2reg한다. 그리고 어떤 int,bool 단일원소가 포인터로 대입되는 operand가 아니라면 추가로 mem2reg가능하다. 이 정당성은 쉽게 보일 수 있다.배열에 대해서 생각해 보았는데 이건 쉽지 않았다.사실상 이게 젤 중요 2. Load ~ 도 AE Se..

CS/Compiler 2024.12.27

문자열 매칭 관련 까먹기 전에 끄적이기

최근에 KMP에 관해 이해도가 조금 올랐다.KMP나 아호코라식과 같은 문자열 매칭은 실패함수를 정의하고 dp같이 이해하면 조금 헷갈린다.DFA로 변환시켜서 경로 찾기로 문제를 환원하자. 실패함수를 정의하는게 헷갈릴 수 있는데, 아호코라식에서 결국 back edge는 suffix tree에서의 경로와 동일하다.따라서 일대다 문자열 매칭도 suffix tree로 가능구현 난이도는 둘이 비슷한거 같고 이해는 아호/kmp가 더 쉽긴 한 듯..?

알고리즘 공부 2024.12.27

Short-Circuit Evaluation

Short - Circuit Evaluation은 뭘까?즉 if(a && b)가 있다고 할 때, a가 0이라면 b를 검사하지 않아야 한다 라는 일종의 약속이다.즉 위의 예시 코드는 반드시 오류가 나지 않아야 한다.  그래서 IR generation을 짤 때 이러한 shortcut을 잘 고려해서 구현해야 올바른 코드이다.그런데 이번 프로젝트3 에서 IR optimization을 진행하면서 다음과 같은 상황을 고려하는 걸 생각하게 됐다.x-x는 x에 어떤 값이 들어있는지 살펴볼 필요 없이 항상 0이다.  즉 이런 상수뿐만이 아니라 register나 experssion에 대한 것들에 대해서도 short - curcuit이 진행되어야 하는가? 혹은 이런것들이 real world compiler는 어떻게 구현되어..

CS/Compiler 2024.12.13