묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결삼각형의 실전! OpenAI Triton 초급
앞으로의 강의 계획에 대하여
안녕하세요! 좋은 강의해주셔서 정말 감사드립니다 이전 공지에서 혹시 Softmax, Flashattention 등의 내용까지 초급으로 포함시키실 것이라고 말씀하셨는데혹시 강의가 추가되는 일정을 구체적으로 알 수 있을까요? 감사합니다
-
해결됨삼각형의 실전! OpenAI Triton 초급
코드가 실행되는 순서에 관하여
@triton.jit def add_kernel(x_ptr, y_ptr, z_ptr, size, block_size: tl.constexpr): (...) def add(x, y): z = (...) size = (...) def grid(meta): return (triton.cdiv(size, meta["block_size"]),) add_kernel[grid](x, y, z, size, 1024) return z 안녕하세요 vector_add.py를 보던 중, 코드 라인이 실행되는 순서가 궁금하여 질문남깁니다 수업에서 runtime 때 meta가 받아진다고 말씀해주셨는데요.그렇다면 코드가 실행되는 순서가runtime 동안 add_kernel의 argument로 들어온 x, y, z, size, 1024가 meta로 받아지고meta를 이용해 grid가 (n, )의 형태로 set되고 그 이후 add_kernel이 실행된다가 맞을까요? 또 하나 궁금한 것은 아래 라인이 실행될 때 @triton.jit 데코레이터의 역할인데요add_kernel[grid](x, y, z, size, 1024)(x, y, z, size, 1024)를 meta로 받아준다그 meta가 적용된 특정 grid 설정 위에서 add_kernel 함수가 실행될 수 있게 해준다일까요? 파이썬에서 원래 함수는 subscriptable하지 않아, 위 syntax가 생소해서 질문드립니다
-
해결됨삼각형의 실전! OpenAI Triton 초급
실행을 위한 최적 환경
안녕하세요 hello_triton.py가 실행이 되지 않아 질문남깁니다 현재 cuda==11.8pytorch==2.1.2triton==2.1 의 환경을 사용하고 있습니다 hello_triton.py 실행 시 아래 오류가 뜹니다Traceback (most recent call last): File "/home/furiosa/Desktop/workspace/Triton/practice-triton/hello_triton.py", line 28, in <module> def hello_triton(): File "/home/furiosa/miniconda3/envs/triton/lib/python3.10/site-packages/triton/runtime/jit.py", line 542, in jit return decorator(fn) File "/home/furiosa/miniconda3/envs/triton/lib/python3.10/site-packages/triton/runtime/jit.py", line 534, in decorator return JITFunction( File "/home/furiosa/miniconda3/envs/triton/lib/python3.10/site-packages/triton/runtime/jit.py", line 433, in init self.run = self._make_launcher() File "/home/furiosa/miniconda3/envs/triton/lib/python3.10/site-packages/triton/runtime/jit.py", line 400, in makelauncher exec(src, scope) File "<string>", line 2 def hello_triton(, grid=None, num_warps=4, num_stages=3, extern_libs=None, stream=None, warmup=False, device=None, device_type=None): ^SyntaxError: invalid syntax triton==2.2 가 아니라 2.1을 사용하는 이유는, hello_triton.py 실행 시 아래 오류가 떴기 때문입니다RuntimeError: Triton Error [CUDA]: device kernel image is invalid 공식홈페이지에서 제공하는 01-vetor-add.py 같은 경우 실행이 잘됩니다triton을 사용하기 위한 최적환경은 무엇인지 별 설명이 없었던 것 같은데요어떤 cuda/pytorch 환경을 사용해야 오류가 가장 안나고 안정적인가요?위 오류는 왜 일어나고 어떻게 해결할까요? 인터넷에도 크게 도움되는 정보는 없어서 부득이 질문 남깁니다ㅠㅠ
-
해결됨삼각형의 실전! OpenAI Triton 초급
강의 계획에 대하여
안녕하세요!모든 강의가 다 나오지는 않았지만 너무 좋은 강의인 것 같아 먼저 결제를 했습니다 ㅎㅎ혹시 바쁘시겠지만 섹션 4. Triton 톺아보기(TBD)에 대한 업데이트 계획을 알려주실 수 있을까요?제목만 봐서는 Triton 전체 개괄을 해주는 것 같아 꼭 들어보고 싶습니다업데이트 해주실동안 열심히 따라가고있겠습니다~~~!고급 강의도 기대 중입니다! 감사합니다!
-
해결됨삼각형의 실전! OpenAI Triton 초급
행렬곱 오차 문제
안녕하세요. 큰 질문은 아니고 사소한 질문일 수도 있습니다만.. 다름이 아니라, 행렬곱 강의에서 구현한 코드에서는 곱해주는 행렬 크기가 커질수록 오차가 누적되는 듯한(정확히 말하면 파이토치 내장 matmul과 계산 결과가 점점 더 달라지는듯한) 현상이 관찰되어 질문드립니다. 먼저, 실습에서 정의한 코드에서부터 x = torch.randn(16,16,device = 'cuda') y = torch.randn(16,16,device = 'cuda') a = matmul(x,y) b = torch.matmul(x,y) assert torch.allclose(a,b)torch.allclose 의 기본 인자(atol=1e-8, rtol=1e-5) 세팅에서는 assertion error가 발생하여 조건을 완화시켜야(atol=1e-5, rtol=1e-5) assertion이 통과되는 모습을 보였고x = torch.randn(2048,1024,device = 'cuda') y = torch.randn(1024,256,device = 'cuda') x, y의 크기를 이와 같이 키웠을 경우엔 atol=1e-4, rtol=1e-4로 조건을 완화시켜야 assertion을 통과하는 모습을 보였습니다. triton kernel로 구현한 행렬곱 연산과 PyTorch 내장 matmul 연산 모두 fp32로 연산이 이루어지고 있는데, 이러한 오차가 발생할 수 있는 원인에 무엇이 있는지 궁금해서 질문 드립니다.
-
해결됨삼각형의 실전! OpenAI Triton 초급
실습 코드
실습코드 제공해주신다고 인트로에서 말씀하셨는데 어디서 볼 수 있나요?