경고
이 저장소의 개발은 https://github.com/janestreet/torch로 이동되었습니다.
ocaml-torch는 PyTorch 텐서 라이브러리에 대한 일부 ocaml 바인딩을 제공합니다. 이는 GPU 가속 및 테이프 기반 자동 차별화를 통해 OCaml NumPy와 유사한 텐서 계산을 제공합니다.
이러한 바인딩은 PyTorch C++ API를 사용하며 대부분 자동으로 생성됩니다. 현재 GitHub 팁과 opam 패키지 v0.7은 PyTorch v2.0.0 에 해당합니다.
Linux에서는 cxx11 abi CPU 버전, cuda 11.7 버전을 사용하는 PyTorch 버전이 필요합니다.
opam 패키지는 다음 명령을 사용하여 설치할 수 있습니다. 그러면 libtorch의 CPU 버전이 자동으로 설치됩니다.
opam 설치 토치
그런 다음 일부 샘플 코드를 컴파일할 수 있습니다. 아래 지침을 참조하세요. ocaml-torch는 utop 또는 ocaml-jupyter를 통해 대화형 모드에서 사용할 수도 있습니다.
다음은 샘플 utop 세션입니다.
첫 번째 토치 프로그램을 빌드하려면 다음 내용으로 example.ml
파일을 만듭니다.
Torchlet 열기 () = tensor = Tensor.randn [ 4; 2 ] 텐서.프린트 텐서
그런 다음 다음 내용으로 dune
파일을 만듭니다.
(실행 파일 (이름 예) (도서관 토치))
dune exec example.exe
실행하여 프로그램을 컴파일하고 실행해 보세요!
또는 먼저 dune build example.exe
통해 코드를 컴파일한 다음 실행 파일 _build/default/example.exe
실행할 수 있습니다(바이트 코드 대상 example.bc
빌드는 macos에서 작동하지 않을 수 있습니다).
MNIST 튜토리얼.
ResNet-18 모델 미세 조정.
생성적 적대 네트워크.
일부 Python 모델을 실행합니다.
외부 저장소의 일부 고급 애플리케이션:
Arulselvan Madhavan의 mini-dalle의 OCaml 포트입니다.
stable-diffusion 1.5를 구현하는 디퓨저 라이브러리의 복제본: Arulselvan Madhavan의 확산기-ocaml.
BERT를 기반으로 한 자연어 처리 모델은 ocaml-bert 저장소에서 찾을 수 있습니다.
다음은 MNIST 데이터 세트(전체 코드)에서 훈련된 선형 모델의 예입니다.
(* 모델 가중치를 저장하기 위해 두 개의 텐서를 생성합니다. *) ws = Tensor.zeros [image_dim; label_count] ~requires_grad:true bs = Tensor.zeros [label_count] ~requires_grad:true를 허용합니다. 모델 xs = Tensor.(mm xs ws + bs)를 입력합니다. for index = 1 ~ 100 do(* 교차 엔트로피 손실을 계산합니다. *)let loss = Tensor.cross_entropy_for_logits (모델 train_images) ~targets:train_labelsinTensor.backward loss;(* 경사하강법을 적용하고 이에 대한 경사 추적을 비활성화합니다. *) Tensor.(no_grad (재미 () -> ws -= 졸업생 ws * f 학습률; bs -= grad bs * f learning_rate));(* 검증 오류를 계산합니다. *)let test_accuracy = Tensor.(argmax ~dim:(-1) (model test_images) = test_labels) |> Tensor.to_kind ~kind:( T Float) |> Tensor.sum |> Tensor.float_value |> fun sum -> sum /. test_samplesinprintf "%d %f %.2f%%n%!" index(Tensor.float_value loss)(100.*.test_accuracy); 완료
CIFAR-10의 일부 ResNet 예제.
순환 신경망을 사용한 문자 수준 언어 모델링을 보여주는 char-rnn의 단순화된 버전입니다.
신경망 스타일 전송은 이미지의 스타일을 다른 이미지의 콘텐츠에 적용합니다. 이것은 깊은 컨볼루셔널 신경망을 사용합니다.
다양한 사전 훈련된 컴퓨터 비전 모델이 비전 라이브러리에 구현됩니다. 가중치 파일은 다음 링크에서 다운로드할 수 있습니다.
ResNet-18 가중치.
ResNet-34 가중치.
ResNet-50 가중치.
ResNet-101 가중치.
ResNet-152 가중치.
DenseNet-121 가중치.
DenseNet-161 가중치.
DenseNet-169 가중치.
SqueezeNet 1.0 가중치.
SqueezeNet 1.1 가중치.
VGG-13 무게.
VGG-16 무게.
AlexNet 가중치.
Inception-v3 가중치.
MobileNet-v2 가중치.
EfficientNet b0 가중치, b1 가중치, b2 가중치, b3 가중치, b4 가중치.
일부 샘플 이미지에서 사전 훈련된 모델을 실행하는 것은 다음 명령을 통해 쉽게 수행할 수 있습니다.
dune exec example/pretrained/predict.exe path/to/resnet18.ot Tiger.jpg
ocaml-torch를 설치하는 이 대체 방법은 GPU 가속이 활성화된 상태에서 실행하는 데 유용할 수 있습니다.
libtorch 라이브러리는 PyTorch 웹사이트(2.0.0 CPU 버전)에서 다운로드할 수 있습니다.
libtorch 라이브러리를 다운로드하고 추출한 후 모든 예제를 빌드하려면 다음을 실행하세요.
LIBTORCH 내보내기=/path/to/libtorch 자식 클론 https://github.com/LaurentMazare/ocaml-torch.gitcd ocaml-torch 모두 만들다