borch

배우기 · 1

텐서

텐서는 모양이 있는 배열이고, GPU 메모리에 있다. 아래 코드는 전부 이 페이지에서 돈다 — 고쳐 놓고 Run 을 누르거나 ⌘/Ctrl + Enter.

장치를 잡는다

무엇보다 await init() 이 먼저다. WebGPU 어댑터를 잡는 것이 비동기라 피할 길이 없다 — 한 번 부르고 잊으면 된다. 못 잡으면 borch 는 더 느린 것으로 내려가지 않고 거기서 멈춘다.

만들기

Tensor.from(data, shape) 는 납작한 배열과 원하는 모양을 받는다. 만드는 함수의 이름은 torch 의 것이다 — zeros·ones· arange·randn·eye·linspace.

값을 읽는 것은 await 다

torch 와 갈리는 두 번째 자리다. 수는 GPU 메모리에 있고 그것을 자바스크립트로 가져오는 것은 복사라서, item()toArray() 는 약속을 돌려준다. 순방향·역방향은 동기다 — 건너오는 것은 읽기뿐이다. torch 가 둘로 나눠 둔 축약은 여기서도 둘이다: amax() 가 값을 주고 max(dim){ values, indices } 를 준다.

연산

원소별 연산은 torch 와 같은 규칙으로 브로드캐스트한다. 다만 인자는 수가 아니라 텐서다 — 자바스크립트에는 연산자 재정의가 없어서 스칼라는 Tensor.full([], 5) 로 적고, 흔한 자리에는 powScalar(k) 가 따로 있다.

모양과 뷰

reshape·transpose·slice 는 torch 가 저장소를 공유하는 자리에서 똑같이 공유한다. 적합성 검사가 그 13 가지를 값이 아니라 저장소로 대조한다 — torch 가 공유하는 자리에서 복사하는 구현은 값이 맞으므로, 값만 보는 검사로는 한참 뒤에야 드러난다.

위 블록이 빨개지면 그것도 알 만한 것이다. 이 페이지의 예제는 테스트가 도는 그 라이브러리를 그대로 부른다 — 화면 그림이 아니다. 되돌리기를 누르면 원래 코드가 돌아온다.