>  기사  >  기술 주변기기  >  JS의 AI 시대가 왔습니다!

JS의 AI 시대가 왔습니다!

WBOY
WBOY앞으로
2024-04-08 09:10:111134검색

JS-Torch 소개

JS-Torch는 구문이 PyTorch와 매우 유사한 딥 러닝 JavaScript 라이브러리입니다. 여기에는 완전한 기능을 갖춘 텐서 객체(추적된 그라디언트와 함께 사용 가능), 딥 러닝 레이어 및 기능, 자동 미분 엔진이 포함되어 있습니다. JS-Torch는 JavaScript의 딥러닝 연구에 적합하며 딥러닝 개발을 가속화할 수 있는 다양한 편리한 도구와 기능을 제공합니다.

JS 的 AI 时代来了!Pictures

PyTorch는 Meta 연구팀이 개발하고 유지 관리하는 오픈 소스 딥 러닝 프레임워크입니다. 신경망 모델을 구축하고 훈련하기 위한 풍부한 도구와 라이브러리 세트를 제공합니다. PyTorch의 디자인 컨셉은 단순성, 유연성 및 사용 용이성입니다. 동적 계산 그래프 기능은 모델 구성을 보다 직관적이고 유연하게 만드는 동시에 모델 구성 및 디버깅의 효율성도 향상시킵니다. PyTorch의 동적 계산 그래프 기능을 사용하면 모델 구성이 더욱 직관적이고 디버그 및 최적화가 쉬워집니다. 또한 PyTorch는 확장성과 운영 효율성도 좋아 딥러닝 분야에서 인기를 얻고 적용되고 있습니다.

npm 또는 pnpm을 통해 js-pytorch를 설치할 수 있습니다:

npm install js-pytorchpnpm add js-pytorch

또는 js-pytorch에서 온라인으로 제공하는 데모[3]를 경험할 수 있습니다:

JS 的 AI 时代来了!pictures

https://eduardoleao052.github. io/js-torch/assets/demo/demo.html

JS-Torch에서 지원되는 기능

현재 JS-Torch는 이미 Add, Subtract, Multiply, Divide 등과 같은 텐서 연산을 지원합니다. 또한 선형, MultiHeadSelfAttention, ReLU 및 LayerNorm과 같이 일반적으로 사용되는 딥 러닝 레이어입니다. ㅋㅋㅋ

Sum

Mean
  • Variance
  • Transpose
  • At
  • MaskedFill
  • Reshape
  • 딥 러닝 레이어
  • nn.Linear
  • nn.MultiHeadSelfAttention
  • nn.FullyConnected
  • nn.Block
  • nn.Embedding
  • nn. 엠베딩
  • nn.ReLU
  • nn .Softmax
  • nn.Dropout
nn.LayerNorm

nn.CrossEntropyLoss
  • JS-Torch 사용 예
  • Simple Autograd
import { torch } from "js-pytorch";// Instantiate Tensors:let x = torch.randn([8, 4, 5]);let w = torch.randn([8, 5, 4], (requires_grad = true));let b = torch.tensor([0.2, 0.5, 0.1, 0.0], (requires_grad = true));// Make calculations:let out = torch.matmul(x, w);out = torch.add(out, b);// Compute gradients on whole graph:out.backward();// Get gradients from specific Tensors:console.log(w.grad);console.log(b.grad);
  • Complex Autograd(Transformer)
  • import { torch } from "js-pytorch";const nn = torch.nn;class Transformer extends nn.Module {constructor(vocab_size, hidden_size, n_timesteps, n_heads, p) {super();// Instantiate Transformer's Layers:this.embed = new nn.Embedding(vocab_size, hidden_size);this.pos_embed = new nn.PositionalEmbedding(n_timesteps, hidden_size);this.b1 = new nn.Block(hidden_size,hidden_size,n_heads,n_timesteps,(dropout_p = p));this.b2 = new nn.Block(hidden_size,hidden_size,n_heads,n_timesteps,(dropout_p = p));this.ln = new nn.LayerNorm(hidden_size);this.linear = new nn.Linear(hidden_size, vocab_size);}forward(x) {let z;z = torch.add(this.embed.forward(x), this.pos_embed.forward(x));z = this.b1.forward(z);z = this.b2.forward(z);z = this.ln.forward(z);z = this.linear.forward(z);return z;}}// Instantiate your custom nn.Module:const model = new Transformer(vocab_size,hidden_size,n_timesteps,n_heads,dropout_p);// Define loss function and optimizer:const loss_func = new nn.CrossEntropyLoss();const optimizer = new optim.Adam(model.parameters(), (lr = 5e-3), (reg = 0));// Instantiate sample input and output:let x = torch.randint(0, vocab_size, [batch_size, n_timesteps, 1]);let y = torch.randint(0, vocab_size, [batch_size, n_timesteps]);let loss;// Training Loop:for (let i = 0; i < 40; i++) {// Forward pass through the Transformer:let z = model.forward(x);// Get loss:loss = loss_func.forward(z, y);// Backpropagate the loss using torch.tensor's backward() method:loss.backward();// Update the weights:optimizer.step();// Reset the gradients to zero after each training step:optimizer.zero_grad();}
  • JS-Torch를 받은 후, Node.js, Deno 및 기타 JS Runtime에서 AI 애플리케이션을 실행하는 날이 다가오고 있습니다. 물론 JS-Torch가 대중화되기 위해서는 GPU 가속이라는 매우 중요한 문제도 해결해야 합니다. 관련 토론이 이미 있습니다. 관심이 있으시면 GPU 지원[4]에서 추가 관련 콘텐츠를 읽어보실 수 있습니다.
  • References
  • [1]JS-Torch: https://github.com/eduardoleao052/js-torch
  • [2]PyTorch: https://pytorch.org/
  • [3]데모: https: / /eduardoleao052.github.io/js-torch/assets/demo/demo.html
  • [4]GPU 지원: https://github.com/eduardoleao052/js-torch/issues/1

  • 위 내용은 JS의 AI 시대가 왔습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제