트레이딩을 위한 ONNX 학습

 

MQL5에서ONNX 모델에 대한 지원을 추가했습니다. 우리는 이것이 미래라고 믿습니다. 우리는 머신 러닝의 사용을 새로운 수준으로 끌어올리는 데 도움이 될 수 있는 이 유망한 분야에 대해 논의하고 연구하기 위해 이 주제를 만들었습니다. 새로운 기능을 사용하면 여러분이 선호하는 환경에서 모델을 교육하고 거래에서 쉽게 실행할 수 있습니다.


기술 개요

ONNX(Open Neural Network Exchange)는 다양한 프레임워크 간에 머신 러닝 모델을 교환하기 위한 오픈 소스 형식입니다. Microsoft, Facebook 및 Amazon Web Services(AWS)에서 개발했으며 ML 모델의 개발 및 배포를 촉진하는 것을 그 목표로 합니다.

ONNX의 주요 이점:

  • 상호 운용성: TensorFlow, PyTorch, Caffe2, MXNet 등과 같은 서로 다른 프레임워크 간에 모델을 교환할 수 있게 되었습니다. 이는 모델의 개발 및 배포 프로세스를 용이하게 합니다.
  • 최적화: 이 기술은 모델의 성능을 개선하고 계산 비용을 줄이기 위해 최적화된 작업 및 계산 그래프를 제공합니다.
  • 표준화: ONNX는 ML 모델을 직렬화하고 저장하는 단일의 형식을 제공합니다. 이는 개발자와 조직 간의 모델 교환을 단순화합니다.
  • 생태계: ONNX는 ML의 혁신을 확산하고 가속화하는 데 도움이 되는 수많은 라이브러리, 도구 및 하드웨어에서 지원됩니다.
  • 개방형 표준: 이 프로젝트는 활발한 커뮤니티가 있는 개방형 형식이며 계속 성장할 것입니다. 여러분 모두가 프로젝트 개발에 기여할 것을 권장합니다.


ONNX를 사용하기 위해 개발자는 TensorFlow 또는 PyTorch와 같은 다양한 프레임워크에서 ONNX 형식으로 모델을 내보낼 수 있습니다. 또한 모델은 MQL5 애플리케이션에 포함되어 MetaTrader 5 거래 터미널에서 실행될 수 있습니다. 이는 어디에서도 제공하지 않는 특별한 기회입니다.

모델을 ONNX 형식으로 변환하는 데 가장 널리 사용되는 도구 중 하나는 Microsoft의 ONNXMLTools입니다. ONNXMLTools는 쉽게 설치할 수 있습니다. 설치 관련 세부 정보 및 모델 변환 예제는https://github.com/onnx/onnxmltools#install의 프로젝트 페이지를 참조하십시오.

학습된 모델을 실행하려면 ONNX Runtime을 사용해야 합니다. ONNX Runtime은 ONNX 형식으로 내보내어진 ML 모델을 실행하도록 설계된 고성능 교차 플랫폼 엔진입니다. 개발자는 ONNX를 사용하여 하나의 프레임워크에서 모델을 빌드한 다음 다른 환경에 쉽게 배포할 수 있습니다. 이는 개발 프로세스를 단순화하는 동시에 유연성을 제공합니다.

ONNX는 ML 개발자와 연구자를 위한 강력한 도구입니다. 이러한 기능을 통해 MQL5를 사용하여 거래에서 모델을 효율적으로 개발하고 구현하십시오.

사용 가능한 정보와 ML 모델 작업에 대한 새로운 접근 방식을 살펴보고 MQL5.community 회원과 정보를 공유하십시오. 여기 이 새롭고 유망한 기술을 탐색하고 시작하는 데 도움이 될 수 있는 이 주제와 관련된 몇 가지 유용한 정보를 참고하세요.

MQL5에 문서화: ONNX models
MQL5에 문서화: ONNX models
  • www.mql5.com
ONNX models - MQL5 リファレンス - MetaTrader 5의 알고리즘/자동 트레이딩 언어에 대한 참조
 

1. ONNX 런타임



이 비디오에서는 ONNX(Open Neural Network Exchange). 또한 모델을 실행하기 위한 고성능 엔진인 ONNX Runtime에 대해서도 설명합니다.

ONNX Runtime은 ONNX에 정의된 모든 연산자에 대한 포괄적인 적용과 지원을 제공하며 Linux, Windows 및 Mac을 포함한 많은 플랫폼에서 CPU 및 GPU와 함께 작동합니다.

또한 Azure ML에서 ONNX Runtime을 사용하여 모델을 변환, 로드 및 실행하는 방법에 대한 단계별 가이드를 제공하고 다양한 모델에 대한 향상된 성능 및 예측 효율성을 비롯한 잠재적인 이점을 보여줍니다.

비디오는 개발자들이 ONNX를 사용하고 또한 현재 성장중인 ONNX 커뮤니티에 참여하도록 독려합니다.

 

2. 모델을 #ONNX 형식으로 변환



이 비디오는 ML models을 ONNX Runtime과 함께 사용하기 위해 ONNX 형식으로 변환하는 다양한 방법을 설명합니다. ONNX는 PyTorch, TensorFlow 및 Scikit-Learn과 같이 널리 사용되는 많은 머신 러닝 라이브러리와 호환됩니다.

모델을 ONNX 형식으로 변환하려면 적절한 변환 라이브러리를 사용한 다음 이 라이브러리를 사용하여 ONNX 모델을 만듭니다. 이를 통해 모델이 ONNX Runtime을 사용할 수 있게 됩니다. ONNX Runtime은 모델의 성능을 향상시키고 여러 프레임워크와 호환되도록 합니다.

이 비디오는 PyTorch 및 TensorFlow를 사용하여 모델을 ONNX 형식으로 변환하는 방법에 대한 예를 보여줍니다.

 

3.  ONNX – 머신 러닝 모델을 위한 개방형 형식



이 비디오는 머신 러닝 모델들을 설명하기 위해 구축된 공개 형식인 ONNX 형식에 대한 설명을 제공합니다. 모델을 다양한 프레임워크에서 ONNX 형식으로 변환하면 호환성과 사용 편의성을 보장할 수 있습니다.

몇 가지 예를 통해 TensorFlow, PyTorch, Keras 및 scikit-learn과 같은 호환 가능한 형식을 보여주고 ONNX 사용의 이점을 설명합니다. 그 중에 더 빠른 모델 실행 시간과 특정 하드웨어에 최적화된 성능 등에 대해 보여줍니다.

다음 비디오에서 작성자는 Keras에서 ONNX로 모델을 변환하고 이미지 분류 및 이미지 분할 문제에 대해 모델을 테스트하는 방법을 보여줍니다.

 

4.  (심층) ONNX를 사용한 머신 러닝 모델 배포



이 비디오는 GitHub에 게시된 Microsoft 오픈 소스 ML 라이브러리의 개발에 대해 다룹니다.

저자는 머신 러닝 모델 배포 문제에 대해 설명합니다. 기가 바이트의 메모리가 있는 대형 기계에 구축되었지만 한 번에 하나의 예측에 대해 최적화가 필요한 매우 다른 조건에서 사용되는 경우의 예입니다.

저자는 scikit-learn, XGBoost 및 ML.NET과 같은 다양한 라이브러리의 성능을 시연하고 패키지 크기가 커질수록 성능 차이가 줄어드는 것을 보여줍니다. 저자는 그런 경우를 위한 최적화 솔루션으로 ONNX를 제시합니다.

 

5. 순환 신경망(Recurrent Neural Networks) | 거래 알고리즘을 위한 LSTM 가격 변동 예측


이 비디오는 순환 신경망, 특히 LSTM 네트워크를 사용하여 FOREX, 주식 및 암호 화폐를 포함한 금융 시장의 가격 변동을 예측하는 방법에 대해 설명합니다.

알고리즘은 Python으로 작성되었습니다. 다운로드하고 다른 매개변수들로 테스트할 수 있습니다.

딥 러닝 알고리즘은 뛰어난 예측 성능을 보여주는 것으로 여겨집니다. 여기서는 거래 및 가격 변동 예측에서 테스트됩니다. 추가로 기술 지표를 사용하여 거래 모델을 위한 매개 변수를 시험해 보세요.

 

ONNX에 대해 알고 싶은 모든 것




ONNX에 대해 알고 싶은 모든 것

ONNX 형식은 모델을 한 프레임워크에서 다른 프레임워크로 내보낼 수 있는 이식 가능한 파일 형식을 제공하여 딥 러닝 환경에서 조각난 도구 및 프레임워크 세트로 인해 발생하는 문제를 해결하는 것을 목표로 합니다. 매우 투명하고 잘 문서화되어 딥 러닝 도메인에서 사용되는 구문, 의미 체계 및 규칙을 표준화하고 딥 러닝과 기존 머신 러닝 모델을 모두 지원합니다. ONNX는 수동 최적화 또는 변환 없이 다양한 하드웨어 환경에서 상호 운용성, 효율성 및 최적화를 지원합니다. 이 비디오는 ONNX 전용 변환기를 사용하여 훈련된 모델을 scikit-learn에서 ONNX 형식으로 변환하는 기본 데모를 보여주고 PI 토치를 사용하여 훈련이 수행되고 다음에서 추론이 수행되는 반응적 사용 사례에서 최종 추론을 수행하는 방법을 보여줍니다. TensorFlow.

웨비나는 "ONNX TF 백엔드"의 "준비" 기능을 사용하고 출력을 ".pb" 파일로 저장하여 ONNX 모델을 TensorFlow 형식으로 변환하는 방법에 대한 시연으로 마무리됩니다. 연사는 TensorFlow 모델을 ONNX를 참조하지 않고 추론에 사용할 수 있다고 말합니다. 청중에게 감사를 표하고 연사는 Microsoft의 분산 응용 프로그램 런타임에 대한 또 다른 웨비나와 함께 The New Stack의 ONNX에 대한 향후 기사를 발표합니다. 참석자들의 피드백은 긍정적이었습니다.

  • 00:00:00 조각화 및 분산된 도구 및 프레임워크 세트로 인해 머신 러닝 및 딥 러닝의 복잡성으로 어려움을 겪고 있다면 ONNX가 필요한 솔루션일 수 있습니다. 웨비나의 한 섹션에서 발표자는 딥 러닝 환경에서 현재 직면한 문제와 ONNX가 이를 해결할 수 있는 방법을 설명합니다. 머신 러닝 및 딥 러닝에 대한 일반적인 지식이 있다고 가정하고 토론에서는 ONNX 및 ONNX 런타임에서 제공하는 약속에 대한 자세한 개요를 제공합니다. 이 섹션이 끝날 무렵 청중은 웨비나 시리즈 전체에서 반복되는 주제인 기계 지능과 최신 인프라의 융합에 대한 아이디어를 소개받습니다.

  • 00:05:00 이 섹션에서 발표자는 특히 교육 및 생산 측면에서 딥 러닝의 과제에 대해 논의합니다. 교육과 관련하여 조각난 프레임워크 및 툴킷 세트를 사용하는 것은 쉽지 않으며 교육을 가속화하기 위해 GPU로 작업할 때 인프라가 필수적입니다. 또한 하드웨어뿐만 아니라 NVIDIA GPU용 CUDA 및 KuDNN과 Intel FPGA용 oneDNN과 같은 소프트웨어에 관한 것입니다. 프로덕션 측면에서 훈련된 모델은 데이터 유형을 변환하고 TensorRT와 같은 도구를 사용해야 하는 높은 정확도와 낮은 대기 시간을 제공하기 위해 대상 환경에 맞게 최적화되어야 합니다. 따라서 딥 러닝은 하드웨어 및 소프트웨어 계층을 이해하고 모델을 최적화하여 원하는 성능을 제공해야 합니다.

  • 00:10:00 이 섹션에서 발표자는 AI 모델을 효과적으로 최적화하고 배포하는 데 필요한 다양한 도구, 프레임워크 및 하드웨어 환경에 대해 설명합니다. 연사는 특히 CPU에 대한 모델의 최적화 및 양자화의 필요성을 강조하고 Nvidia T4 및 Intel의 OpenVINO 툴킷과 같은 널리 사용되는 툴킷을 언급합니다. 발표자는 또한 산업 자동화 및 IoT 사용 사례를 위한 Nvidia의 Jetson 제품군, 비전 컴퓨팅을 위한 Intel의 비전 처리 장치, 에지를 위한 Google의 Edge TPU와 같이 서로 다른 하드웨어 환경에는 서로 다른 툴킷이 필요하다고 설명합니다. AI 모델의 최적화 및 배포 프로세스는 드리프트 감지, 재교육, 최적화, 배포 및 모델 확장을 포함하는 복잡하고 지속적인 프로세스입니다. 연사는 이 전체 폐쇄 루프 메커니즘을 효과적으로 처리하는 파이프라인을 갖는 것이 중요하다고 강조합니다.

  • 00:15:00 이 섹션에서 연사는 효율성, 최적화 및 상호 운용성을 촉진하는 다양한 프레임워크와 대상 환경 사이에서 중개자 역할을 하는 Open Neural Network Exchange인 ONNX를 소개합니다. ONNX는 딥 러닝 및 기존 기계 학습 모델을 지원하고 한 프레임워크에서 다른 프레임워크로 모델을 내보내고 가져올 수 있습니다. 또한 ONNX는 수동 최적화나 변환 없이 다양한 하드웨어 환경을 지원합니다. 연사는 2017년 창립 멤버인 AWS, Microsoft 및 Facebook과 함께 설립된 ONNX가 Nvidia, Intel, IBM, Qualcomm, Huawei, Baidu 등의 기여로 크게 성장했으며 퍼블릭 클라우드 플랫폼 내에서 이 생태계를 적극적으로 홍보하고 있다고 언급합니다. 툴킷 및 런타임. ONNX는 다른 프레임워크 및 도구 키트의 발전에 대응하여 상당한 변화를 거쳐 플랫폼 간 소형화 및 최신 개발에 뒤처지지 않았습니다.

  • 00:20:00 이 섹션에서 발표자는 하나의 프레임워크 또는 툴킷에서 훈련된 모델을 다른 프레임워크로 내보낼 수 있는 휴대용 파일 형식인 ONNX에 대해 설명합니다. ONNX는 JVM 및 CLR과 같은 이식 가능한 런타임에서 크게 영감을 얻었으며 높은 수준의 도구 키트에서 추상화 및 분리 수준을 제공합니다. 딥 러닝 도메인에서 사용되는 구문, 의미론 및 규칙을 표준화하는 매우 투명하고 잘 문서화된 형식입니다. ONNX ML은 기존 기계 학습을 지원하는 확장 프로그램이기도 합니다. 모델을 ONNX로 내보내면 전체 모델을 나타내는 여러 계산 노드의 그래프가 됩니다.

  • 00:25:00 이 섹션에서는 화자가 ONNX의 그래프 내 계산 노드 구조를 설명합니다. 각 노드는 독립적이며 입력 데이터 및 매개변수와 함께 실제 계산을 수행하는 연산자를 포함합니다. 입력 데이터는 다양한 데이터 유형으로 구성된 텐서일 수 있으며, 이는 연산자에 의해 처리되어 다음 계산 노드로 전송되는 출력을 방출합니다. 연사는 또한 ONNX 연산자 유형을 상위 수준 프레임워크 또는 도구 키트와 매핑하므로 연산자가 ONNX에서 필수적이라고 언급하여 모델을 쉽게 해석하고 상위 수준 그래프 구조를 ONNX 내에서 사용 가능한 실제 연산자에 매핑할 수 있도록 합니다.

  • 00:30:00 이 섹션에서는 비디오에서 사용자 지정 연산자와 ONNX 내에서 정의할 수 있는 방법에 대해 설명합니다. 사용자 지정 연산자는 사용 가능한 ONNX 연산자에 포함되지 않은 고유한 활성화 함수 또는 기술을 만드는 고급 사용자에게 유용합니다. 그런 다음 프레임워크 수준에서 ONNX로 모델을 내보내는 데 사용자 지정 연산자를 사용할 수 있습니다. 그런 다음 비디오는 ONNX를 사용하여 훈련된 모델을 ONNX 전용 변환기를 사용하여 scikit-learn에서 ONNX 형식으로 변환하는 기본 데모를 보여줍니다.

  • 00:35:00 이 섹션에서 연사는 ONNX 형식의 투명성과 해석 가능성을 강조하여 모델 구조를 쉽게 구문 분석하고 탐색할 수 있도록 합니다. ONNX 모델은 protobuf로 내보낼 수도 있으므로 모델에서 사용 가능한 노드를 프로그래밍 방식으로 반복할 수 있습니다. 비디오는 기존 모델을 사용한 추론을 보여주고 코드는 입력 데이터의 각 요소에 대한 분류와 함께 numpy 배열을 반환하는 추론을 위해 입력 데이터를 보내는 방법을 보여줍니다. ONNX의 이점 중 하나는 Escalon과 분리되어 있으므로 모델의 출처를 걱정할 필요가 없어 모델을 쉽게 사용할 수 있다는 것입니다. ONNX 형식은 DLL 또는 jar 파일과 유사합니다. 사용하기 전에 작성된 프로그래밍 언어에 대해 걱정할 필요가 없기 때문에 유연하고 다재다능합니다.

  • 00:40:00 이 섹션에서는 발표자가 ONNX 파일 형식과 ONNX 런타임에 대해 이야기합니다. ONNX는 잘 정의된 사양에서 모델의 그래프와 연산자를 정의하는 이식 가능한 독립 형식입니다. 반면에 ONNX 런타임은 Microsoft가 주도하고 옹호하는 프로젝트입니다. ONNX와는 다른 프로젝트이며 실제 런타임을 생성하여 ONNX의 약속을 한 단계 더 발전시킵니다. Microsoft는 ONNX 런타임이 Windows 10에서 사실상 최소한의 레이어가 되었기 때문에 ONNX 런타임에 큰 기대를 걸고 있습니다. 연사는 해당 레이어의 시각적 표현을 통해 ONNX와 ONNX 런타임 간의 관계를 설명합니다.

  • 00:45:00 이 섹션에서 발표자는 기본 하드웨어를 추상화하여 다른 하드웨어 및 최적화 도구와 함께 쉽게 사용할 수 있도록 하는 ONNX 런타임의 가능성에 대해 논의합니다. ONNX는 플러그인 모델을 통해 실행 공급자를 사용합니다. 플러그인 모델은 하드웨어 공급업체가 기존 드라이버 및 라이브러리와 인터페이스하도록 구축할 수 있어 런타임의 이식성이 매우 뛰어납니다. Microsoft는 ONNX 런타임의 성능이 우수함을 입증하는 수많은 벤치마크를 게시했으며 Microsoft 내의 많은 제품 팀은 이제 Bing에서 Office 365, 인지 서비스에 이르기까지 선호하는 딥 러닝 런타임으로 ONNX를 채택하고 있습니다. 그런 다음 발표자는 ONNX 런타임에서 실행할 수 있는 ONNX 모델을 가져오는 네 가지 방법을 설명합니다. Model Zoo에서 시작하여 Azure ml을 사용하여 클라우드 또는 에지에서 모델을 교육하고 배포하는 것으로 끝납니다.

  • 00:50:00 이 섹션에서 발표자는 모델 동물원에서 사전 훈련된 ONNX 모델을 다운로드하고 이를 추론에 사용하는 방법에 대해 설명합니다. 데모에는 모델 동물원에서 다운로드한 사전 훈련된 EMNIST ONNX 모델과 추론에 사용되는 필기 숫자의 테스트 이미지가 포함됩니다. 발표자는 코드를 살펴보고 입력 데이터를 ONNX 모델로 보내기 전에 필요한 사전 처리 단계를 설명합니다. 이 코드는 ONNX 런타임, NumPy 및 OpenCV 라이브러리를 사용하며 최종 출력은 예측된 숫자 값입니다. 발표자는 모델이 정확하고 손으로 쓴 숫자를 올바르게 식별할 수 있음을 보여줍니다.

  • 00:55:00 이 섹션에서 연사는 PI 토치를 사용하여 교육을 수행하고 TensorFlow에서 추론을 수행하는 매우 반응적인 사용 사례에서 최종 추론을 수행하는 방법을 시연합니다. 발표자는 PI 토치 모델을 ONNX 모델로 변환한 다음 TensorFlow에서 직접 사용할 수 있는 protobuf 파일로 변환하는 방법을 보여줍니다. 코드는 간단하며 Pytorch에서 사용할 수 있는 내장 내보내기 도구를 통해 변환이 수행됩니다.

  • 01:00:00 이 섹션에서는 발표자가 ONNX 모델을 TensorFlow 형식으로 변환하는 방법을 설명합니다. 이는 단순히 ONNX를 가져오고 "ONNX TF 백엔드"에서 "준비" 기능을 사용하여 모델을 로드한 다음 출력을 ".pb" 파일에 쓰는 방식으로 수행됩니다. 연사는 ONNX를 참조하지 않고 TensorFlow 모델을 추론에 사용할 수 있음을 보여줍니다. 세션은 자습서 및 모든 소스 코드를 사용할 수 있는 The New Stack의 연사가 ONNX에 대한 향후 기사에 대한 메모로 끝납니다.

    01:05:00
    이 섹션에는 ONNX에 대한 정보가 포함되어 있지 않지만 해당 주제에 대한 웨비나의 결론 역할을 합니다. 연사는 청중의 참석과 성원에 감사드리며 웨비나 녹화 영상을 곧 업로드할 예정임을 알립니다. 청중은 웨비나의 관련성과 품질을 평가하도록 요청받으며 대부분의 응답자는 긍정적인 피드백을 제공합니다. 연사는 다음 달에 열릴 Microsoft의 분산 응용 프로그램 런타임에 대한 또 다른 웨비나를 발표하면서 끝맺습니다.
Everything You Want to Know About ONNX
Everything You Want to Know About ONNX
  • 2020.07.12
  • www.youtube.com
Open Neural Network Exchange (ONNX) is an open format built to represent machine learning models. It defines the building blocks of machine learning and deep...
 

ONNX 및 ONNX 런타임



ONNX 및 ONNX 런타임

ONNX 에코시스템은 모든 프레임워크의 모델을 각 배포 대상에 최적화된 균일한 모델 표현 형식으로 변환하는 상호 운용 가능한 표준 형식입니다. ONNX 표준의 ONNX Runtime 구현은 하드웨어 가속기를 지원하는 교차 플랫폼 및 모듈식입니다. 변환기가 작업하는 다양한 수준의 최적화에는 그래프 변환, 그래프 분할 및 할당이 포함됩니다. 연사는 또한 C API와 같은 ONNX 사용의 다양한 이점, 바이너리 호환성 손상에 대한 걱정 없이 새로운 성능 이점을 활용할 수 있는 API 안정성, ONNX 모델 실행을 위한 최적의 구성을 결정하는 데 사용할 수 있는 ONNX Go Live 도구에 대해 논의합니다. 다른 하드웨어에서. 또한 ONNX를 프레임워크와 비교하고 플랫폼 간 호환성을 다룹니다.

  • 00:00:00 이 섹션에서는 ONNX Runtime 팀의 Ton of Sharma가 ONNX 에코시스템에 대한 소개 및 설문 조사를 통해 ONNX 및 ONNX Runtime의 기술 설계와 함께 ONNX 에코시스템의 동기와 Microsoft에서의 광범위한 채택을 설명합니다. 그는 모델 훈련을 위해 서로 다른 프레임워크를 사용하는 여러 팀의 문제를 강조하지만 프로덕션에서 모델을 배포하고 하드웨어를 최대한 활용하는 경우 ONNX는 중간에 앉아 모든 프레임워크의 모델을 균일한 모델 표현 형식으로 변환합니다. 각 배포 대상에 최적화되어 상호 운용 가능한 표준 형식입니다. 오픈 소스 프로젝트는 2017년 12월에 시작되었으며 Facebook, Microsoft 및 Amazon이 가장 먼저 컨소시엄에 합류했으며 현재 40-50개 이상의 회사가 ONNX에 적극적으로 참여하고 투자하고 있습니다.

  • 00:05:00 이 섹션에서 연사는 ONNX Model Zoo, Azure Custom Vision AutoML 도구 또는 오픈 소스 변환을 사용하는 등 원하는 프레임워크에서 모델을 학습한 후 ONNX 모델을 얻는 다양한 방법에 대해 설명합니다. 특정 형식의 모델을 ONNX로 변환하는 도구. ONNX 표준을 구현한 ONNX Runtime은 원하는 장치 또는 배포 대상에서 ONNX 모델을 최대한 빠르게 실행하는 방법으로 도입됩니다. Tensor RT 및 Intel MKL DNN과 같은 다양한 벤더의 하드웨어 가속기 지원이 내장된 확장 가능하고 모듈식이며 교차 플랫폼입니다. 최신 버전인 ONNX Runtime 1.0은 ONNX 사양을 완벽하게 지원하며 Windows Machine Learning 프레임워크에서 실행되는 핵심 라이브러리입니다.

  • 00:10:00 이 섹션에서는 발표자가 LLVM 및 TVM을 기본 프레임워크로 사용하여 JET 형식으로 컴파일한 후 ONNX 배포에 대해 이야기합니다. 그들은 MNIST 플랫폼 계획의 일부인 Azure 기계 학습 서비스, 에지 클라우드 및 에지 IoT 장치를 포함하여 다양한 유형의 장치에 ONNX를 배포하기 위한 참조 지점과 노트북을 게시했습니다. Microsoft의 ML minimal 및 ML dotnet은 이미 ONNX를 지원하며 현재까지 약 60개 이상의 ONNX 모델을 생산하고 있으며 평균 3배의 성능 향상이 있습니다. ONNX의 설계 원칙은 상호 운용 가능하고 컴팩트하며 플랫폼 간 호환이 가능하고 이전 버전과 호환되며 딥 로드 및 기존 머신 러닝 모델을 모두 지원하는 것이었습니다.

  • 00:15:00 이 섹션에서 연사는 데이터 흐름 그래프 자체의 표현부터 시작하여 ONNX 사양의 세 부분에 대해 설명합니다. 그는 표현을 확장할 수 있고 새로운 연산자와 유형을 추가할 수 있다고 설명합니다. 두 번째 부분은 그래프에 저장된 표준 유형 및 특성의 정의이고 세 번째 부분은 ONNX 모델의 모든 연산자에 대한 스키마입니다. 모델 파일 형식은 쉽게 검사할 수 있는 protobuf를 기반으로 하며 버전, 메타데이터 및 입력, 출력, 계산 노드 및 그래프 이름으로 구성된 비주기적 계산 그래프를 포함합니다. 텐서 유형, 복합 및 시퀀스 및 맵과 같은 비텐서 유형이 지원됩니다. ONNX 연산자 집합에는 약 140개의 연산자가 포함되어 있으며 누구나 ONNX 오픈 소스 GitHub 리포지토리에 끌어오기 요청을 제출하여 더 많은 연산자를 추가할 수 있습니다.

  • 00:20:00 이 섹션에서 연사는 ONNX의 기존 작업에서 지원하지 않을 수 있는 사용자 지정 작업을 추가하는 기능을 포함하여 ONNX의 기능에 대해 설명합니다. 발표자는 또한 버전 관리의 중요성과 ONNX가 IR 버전, OP 세트 버전 및 운영자 버전을 포함하여 세 가지 수준에서 버전 관리를 통합하는 방법에 대해 이야기합니다. ONNX 런타임에 대해서도 논의하며 주요 목표는 성능, 역방향 및 순방향 호환성, 플랫폼 간 호환성 및 모델의 하이브리드 실행입니다. 런타임에는 외부 하드웨어 가속기를 추가하기 위한 플러그형 아키텍처가 포함되어 있습니다.

  • 00:25:00 이 섹션에서 발표자는 ONNX Runtime 내에서 모델을 실행하는 두 단계, 즉 모델로 세션을 만들고 모델을 로드한 다음 Run API를 호출하는 두 단계에 대해 설명합니다. 모델을 로드하면 protobuf의 비효율적인 그래프 표현이 생성되고 그래프는 컴파일러 최적화와 유사하게 다양한 수준의 그래프 변환을 거칩니다. ONNX Runtime은 사용자 정의할 수 있는 다양한 수준의 그래프 변환 규칙 및 융합을 제공하며 사용자는 API를 통해 자신의 규칙을 추가할 수 있습니다. 그래프가 최적화되면 서로 다른 하드웨어 가속기로 분할되고 각 노드는 특정 가속기에 할당됩니다. 연사는 실행 부분에 대해서도 언급하며 순차 실행 모드와 병렬 실행 모드의 두 가지 작동 모드를 언급합니다. 마지막으로 연사는 사용자에게 실행할 공급자를 알려주는 ONNX Runtime의 향후 작업에 대해 이야기합니다.

  • 00:30:00 이 섹션에서는 발표자가 ONNX Runtime의 최적화에 대해 자세히 설명합니다. 그래프의 변환, 그래프 분할 및 할당은 변환기가 그래프를 다시 작성하기 위해 작업하는 다양한 수준의 최적화입니다. 세션 및 실행은 실행 기능에 대한 간단한 호출로 실행할 준비가 되도록 모델을 로드하고 최적화하는 ONNX 런타임의 이중 API입니다. 연사는 또한 ONNX Runtime의 하드웨어 가속기 인터페이스인 실행 공급자와 공급업체가 실행 공급자 API를 구현하여 새 하드웨어 가속기를 추가할 수 있는 방법에 대해 이야기합니다. 마지막으로 발표자는 새로운 실행 공급자 또는 사용자 지정 작업 추가 및 융합 수준 확장과 같은 ONNX Runtime의 여러 확장 지점을 언급합니다.

  • 00:35:00 이 섹션에서 발표자는 사용자가 바이너리 호환성을 깨뜨릴 염려 없이 새로운 성능 이점을 활용할 수 있게 해주는 API 안정성을 포함하여 ONNX Runtime에서 C API를 사용할 때의 이점에 대해 설명합니다. 또한 다양한 하드웨어에서 ONNX 모델을 실행하기 위한 최적의 구성을 결정하는 데 사용할 수 있는 ONNX Go Live 도구에 대해서도 설명합니다. 그런 다음 발표자는 ONNX Runtime을 최대한 빠르게 실행하기 위한 지속적인 성능 최적화 외에도 Android 기기의 API에서 N 지원, Qualcomm 및 교육 최적화를 비롯한 향후 기능에 대해 설명합니다.

  • 00:40:00 비디오의 이 섹션에서 연사는 특정 운영자(OP)가 가능한 한 빨리 실행되도록 하기 위해 운영을 최적화하는 것의 중요성에 초점을 맞춥니다. 그들은 ONNX를 프레임워크와 비교하여 이전 버전보다 성능이 더 좋은지 확인하려고 합니다. 연사들은 또한 훈련이 어떻게 진행되는지에 대해 논의하며 그들이 작업하고 있지만 소스 훈련이 아직 완료되지 않았다는 점에 주목합니다. 또한 ONNX 형식이 무엇을 생성하고 처리할 수 있는 형식(예: 문자열)에 관한 질문에 답합니다. 현재 개방형 거버넌스 모드가 없고 궁극적으로 Microsoft가 제어하지만 외부 기여를 계속 환영하는 주요 제품으로서 ONNX Runtime의 디자인에 Microsoft가 미치는 영향에 대해 약간의 논의가 있습니다. 발표자는 플랫폼 간 호환성에 대해서도 언급하면서 런타임이 Linux, Windows 및 Mac용으로 설계되었음을 언급합니다.
 

ONNX - ONNX 런타임, 간단한 예



ONNX - ONNX 런타임, 간단한 예

이 YouTube 동영상에서 발표자는 여러 프레임워크에서 성능을 최적화할 수 있는 기계 학습 모델용 개방형 형식인 ONNX를 소개합니다. 이 비디오는 뉴스 기사의 감정 분석 및 수치 벡터 분류자를 신경망으로 변환하는 것과 같은 다양한 시나리오에서 ONNX를 사용하는 예를 제공합니다. 발표자는 기능을 위해 기존 라이브러리를 사용하고 코드의 실행 시간을 정확하게 측정하는 것의 중요성을 강조합니다. 또한 발표자는 다양한 운영 체제에서 개발할 때의 문제에 대해 논의하고 런타임 성능을 개선하기 위해 필요한 모듈만 로드할 것을 권장합니다. 전반적으로 이 비디오는 기계 학습 모델에 ONNX를 사용할 때의 이점과 과제에 대한 귀중한 통찰력을 제공합니다.

  • 00:00:00 이 섹션에서 발표자는 모델의 성능을 최적화하기 위해 다양한 프레임워크에서 사용할 수 있는 기계 학습 모델의 개방형 형식인 ONNX에 대해 설명합니다. ONNX는 XML 형식의 아날로그 이진 형식이지만 더 빠르고 더 작은 메시지에 더 적합한 프로토콜 버퍼를 기반으로 합니다. ONNX 모델은 하나의 운영 체제 및 프로세서에서 개발할 수 있으며 모바일 장치 및 그래픽 카드를 포함하여 어디에서나 사용할 수 있습니다. ONNX 런타임은 모델 교육 및 추론의 플랫폼 간 가속화를 위한 라이브러리입니다. ONNX는 또한 하드웨어 가속을 사용하지 않고 크기를 줄이기 위해 모델의 양자화를 허용하고 가중치 값 중 일부를 0 값으로 대체하여 크기를 줄이기 위해 모델을 가지치기합니다. 스피커에는 ONNX에 대한 자세한 정보를 찾을 수 있는 웹사이트 링크가 포함되어 있습니다.

  • 00:05:00 이 섹션에서 연사는 ONNX Runtime을 사용하여 ONNX 형식의 사전 훈련된 모델로 작업하는 데 필요한 단계에 대해 설명합니다. 이 모델은 모든 프레임워크를 사용하여 생성하고 ONNX 형식으로 저장한 다음 성능이 낮은 서버에서 또는 과도한 서버 로드를 처리하는 등 다양한 방식으로 사용할 수 있습니다. 그런 다음 발표자는 Hugging Face 변환기 라이브러리를 사용하여 암호화폐와 관련된 뉴스 기사의 감정을 결정하는 예를 제공합니다. 마지막으로 발표자는 필요한 라이브러리를 로드 및 처리하고 샘플 뉴스 기사에서 모델을 실행한 결과를 보여줌으로써 모델의 적용을 시연합니다.

  • 00:10:00 이 섹션에서 발표자는 ONNX 프레임워크를 사용하여 신경망에서 결과를 생성하기 위해 수치 벡터 분류기를 변환하는 프로세스에 대해 설명합니다. SoftMax 기능은 프로세스 속도를 크게 저하시켜 사용하지 않고 대신 수동으로 입력 값을 사용했다고 설명합니다. 그런 다음 모델을 로드하고 정확도를 테스트하여 유망한 결과를 보여주었습니다. 그러나 서로 다른 운영 체제 및 프레임워크에 설치하는 데 어려움이 있어 모델 배포 시 철저한 테스트와 유연성이 필요했습니다.

  • 00:15:00 이 섹션에서 발표자는 다른 플랫폼에서 소프트웨어를 개발하려고 할 때 발생할 수 있는 잠재적인 문제와 모든 것을 수동으로 구현하려고 하기보다 기존 라이브러리를 사용하는 것의 중요성에 대해 논의합니다. 그녀는 다양한 부동 소수점 형식을 사용하는 것과 관련된 문제와 이로 인해 매우 크거나 작은 숫자로 작업하려고 할 때 오류가 발생할 수 있는 방법에 대해 언급합니다. 또한 그녀는 기존 라이브러리의 개발자가 발생할 수 있는 잠재적인 문제를 이미 처리했기 때문에 사용자 지정 기능을 만들기보다는 SoftMax와 같은 기존 기능 구현을 사용할 것을 제안합니다.

  • 00:20:00 이 섹션에서 연사는 MacOS에서 개발하는 동안 발생한 문제와 MacOS와 Linux의 차이점에 대해 논의합니다. 또한 너무 많은 모듈을 로드하면 실행 시간에 상당한 영향을 미칠 수 있으므로 필요한 모듈만 로드하고 나머지는 비활성화하여 런타임 성능을 개선해야 한다고 언급했습니다. 발표자는 또한 성능에 영향을 줄 수 있는 다양한 요소를 고려하여 런타임을 정확하게 측정하기 위해 "timeet" 유틸리티를 사용할 것을 권장합니다.

  • 00:25:00 비디오의 이 섹션에서 발표자는 코드의 실행 시간 측정, 특히 서로 다른 코드 조각의 성능을 비교하는 것의 중요성에 대해 논의합니다. 그들은 실행 시간을 여러 번 측정하고 더 정확한 평가를 위해 평균을 내야 할 필요성을 강조합니다. 그런 다음 발표자는 이 접근 방식을 사용하여 두 코드 조각의 성능을 서로 다른 데이터 처리 방법과 비교하여 한 방법이 다른 방법보다 훨씬 빠르다는 것을 보여주었습니다. 마지막으로 발표자는 프레젠테이션 링크를 제공하고 참석해 주신 청중에게 감사드립니다.
ONNX - ONNX Runtime, простой пример.
ONNX - ONNX Runtime, простой пример.
  • 2023.01.25
  • www.youtube.com
Доклад об использовании ONNX моделей. Подготовлен в рамках курса от ods.ai ML System Design. Рассмотрен простой пример https://github.com/lunaplush/onnx_exam...
 

PyTorch-ONNX 변환기 개요



PyTorch-ONNX 변환기 개요

이 개요에서 Microsoft의 Bowen Bao는 PyTorch-ONNX 변환기를 소개하고 PyTorch 모델을 토치 중간 표현(IR)으로 변환한 다음 ONNX IR로 변환하고 마지막으로 Protobuf 파일로 변환하는 아키텍처와 흐름을 설명합니다. 변환기는 동적 모양, 정량화된 모델이 포함된 모델 내보내기를 처리하고 루프, if 문 및 ONNX 루프 및 ONNX if 노드를 통한 기타 작업을 캡처합니다. 또한 사용자는 사용자 지정 연산자를 만들거나 기존 사용자 지정 PyTorch 연산자를 사용하여 ONNX 모델을 내보내거나 사용자 지정 기호 함수를 등록하여 내보내기 방법을 내보낼 수 있습니다. Bowen은 또한 ONNX 로컬 기능을 설명하고, 자동 주조를 통해 혼합 정밀도를 해결하고, 오류 진단을 개선하면서 더 많은 모델을 계속 지원할 계획으로 결론을 내립니다.

  • 00:00:00 이 섹션에서는 Microsoft의 소프트웨어 엔지니어인 Bowen이 아키텍처 및 흐름을 포함하여 PyTorch-ONNX 변환기에 대한 개요를 제공합니다. PyTorch 패키지의 일부인 변환기는 토치 추적 프로그램과 토치 스크립트를 활용하여 PyTorch 모델을 토치 IR(중간 표현)로 변환한 다음 ONNX IR로 변환합니다. 마지막 단계에는 Protobuf 파일의 ONNX 모델로 직렬화하는 작업이 포함됩니다. 이 변환기는 정량화된 모델뿐만 아니라 동적 입력 및 출력 형태로 모델 내보내기를 지원하고 ONNX 루프 및 ONNX if 노드를 통해 루프, if 문 및 기타 작업을 캡처할 수 있습니다. 또한 사용자는 사용자 지정 연산자를 만들거나 기존 사용자 지정 PyTorch를 사용할 수 있습니다.
    연산자를 사용하여 ONNX 모델을 내보내거나 사용자 지정 기호 함수를 등록하여 내보내기 방법을 내보내는 방법을 알려줍니다. 마지막으로 Bowen은 ONNX 로컬 기능의 동기를 설명합니다.

  • 00:05:00 이 섹션에서는 PyTorch-ONNX 변환기와 평평한 노드와 같이 내보낸 ONNX 모델과 관련된 몇 가지 일반적인 불만 사항에 초점을 맞춥니다. 이 문제를 해결하기 위해 사용자가 Torch 모듈 클래스 또는 노드 유형 기능을 지정할 수 있는 로컬 기능 기능이 추가되었습니다. Torch autocast 및 NVIDIA Apex mp를 사용하여 혼합 정밀도도 지원됩니다. 비디오는 향상된 고장 진단과 더 많은 모델을 계속 지원한다는 목표에 대한 논의로 마무리됩니다. 제공된 링크는 PyTorch-ONNX 변환기를 사용하는 사용자에게 유용한 리소스와 도구를 제공합니다.
An Overview of the PyTorch-ONNX Converter
An Overview of the PyTorch-ONNX Converter
  • 2022.07.13
  • www.youtube.com
This session will present an overview of the PyTorch-ONNX converter, its implementation, and recent improvements to support a wide range of models.Bowen is a...
 

ONNX 소개 | 튜토리얼-1 | 개방형 신경망 교환 | ONNX



ONNX 소개 | 튜토리얼-1 | 개방형 신경망 교환 | ONNX

이 자습서에서는 기존 모델을 한 프레임워크에서 다른 프레임워크로 변환하는 중간 기계 학습 프레임워크인 ONNX를 소개합니다. 이 과정에서는 딥 러닝에서 직면한 문제, ONNX 개요 및 ONNX 런타임에 대한 토론을 다룹니다. 강사는 ONNX로 모델을 변환하는 실용적인 예를 보여주고 Python 모델을 TensorFlow 모델로 변환하는 실제 사용 사례를 공유합니다. Python 프로그래밍, 기계 학습 기본 사항 및 PyTorch, TensorFlow 및 Scikit-learn과 같은 프레임워크에 익숙해야 합니다.

Introduction to ONNX | Tutorial-1 | Open Neural Network Exchange | ONNX
Introduction to ONNX | Tutorial-1 | Open Neural Network Exchange | ONNX
  • 2022.05.21
  • www.youtube.com
Check out my other playlists:► Complete Python Programming: https://youtube.com/playlist?list=PLkz_y24mlSJaY8YuDJniDw-naFVMac-3k► 100 Days of Machine Learni...
사유: