트레이딩을 위한 ONNX 학습 - 페이지 5

 

Onnx-mlir: ONNX 모델용 MLIR 기반 컴파일러 - 최신 상태



Onnx-mlir: ONNX 모델용 MLIR 기반 컴파일러 - 최신 상태

Onnx-mlir는 최적화 및 코드 생성을 위해 MLIR 및 LLVM을 사용하고 CPU 및 사용자 지정 가속기를 지원하는 ONNX 모델용 컴파일러입니다. IBM Research의 Dong Lin은 철저한 테스트의 중요성을 강조하고 온라인 채점 서비스 및 모델 제공 프레임워크에서 프레임워크의 사용을 강조합니다. Onnx-mlir는 다양한 수준에서 최적화된 CPU 및 가속기에 대한 여러 방언을 가지고 있으며 IBM 가속기를 사용하여 신용 카드 사기 탐지 모델의 속도를 11배 높이는 것으로 나타났습니다. 이 프로젝트는 중요한 연산자를 최적화하고 틈새 ML 연산자 및 GPU와 같은 기타 가속기를 지원하기 위한 커뮤니티 기여를 환영합니다.

  • 00:00:00 이 섹션에서는 IBM Research의 Dong Lin이 상위 수준 최적화 및 하위 수준 코드 생성을 위해 MLIR 및 LLVM을 사용하는 ONNX 모델용 컴파일러인 ONNX-MLIR에 대해 설명합니다. 컴파일러는 MLIR에서 ONNX 방언에 대한 참조를 제공하고 CPU뿐만 아니라 사용자 정의 가속기에 대한 최적화를 편리하게 만드는 것을 목표로 합니다. 다른 MLIR 기반 컴파일러와 쉽게 통합할 수 있으며 Python, C++ 및 Java와 같은 다양한 프로그래밍 언어를 지원합니다. Dong Lin은 또한 컴파일러를 주의 깊게 테스트하는 것의 중요성을 강조하고, 새로 도입된 사용자 정의 가속기 지원과 함께 온라인 채점 서비스 및 모델 제공 프레임워크에 사용되었다고 언급합니다.

  • 00:05:00 이 섹션에서 발표자는 새로운 가속기를 최적화하고 지원할 수 있는 ONNX-MLIR 컴파일러에 대해 설명합니다. 컴파일러에는 다양한 수준에서 최적화된 CPU 및 가속기에 대한 여러 방언이 있습니다. 연사는 IBM 액셀러레이터를 사용하여 신용 카드 사기 탐지 모델의 속도를 11배 높일 수 있는 프레임워크의 기능을 시연했지만 자세한 내용은 공개할 수 없었습니다. 그들은 중요한 연산자를 최적화하고 틈새 기계 학습 연산자 및 GPU와 같은 기타 가속기를 지원하는 것을 목표로 하기 때문에 오픈 소스 프로젝트를 성장시키기 위한 커뮤니티의 기여에 대한 관심을 강조했습니다.
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
Onnx-mlir: an MLIR-based Compiler for ONNX Models - The Latest Status
  • 2022.07.13
  • www.youtube.com
Onnx-mlir is an open source compiler implemented using the Multi-Level Intermediate Representation (MLIR) infrastructure recently integrated in the LLVM proj...
 

PFVM - ONNX를 중간 표현으로 사용하는 신경망 컴파일러



PFVM - ONNX를 중간 표현으로 사용하는 신경망 컴파일러

이 비디오에서 Preferred Networks의 Zijian Xu는 모듈 최적화를 위한 중간 표현으로 ONNX를 사용하는 신경망 컴파일러인 PFVM을 소개합니다. 그는 PFVM이 내보낸 ONNX를 입력으로 가져오고 최적화하고 타사 API를 사용하여 지정된 백엔드로 모델을 실행하는 방법에 대해 설명합니다. Genji는 고객 연산자로 ONNX 확장, 모양 추론 및 그래프 단순화를 포함하여 최적화의 중요성을 설명합니다. 또한 동적 사례에서 더 많은 지원이 필요하다는 점을 포함하여 현재 ONNX 컴파일러의 한계를 설명하고 더 많은 추론 기능을 구현할 것을 제안합니다. Zijian Xu는 더 빠른 계산을 위해 커널 범위 오버헤드 및 메모리 사용량을 줄이는 것의 중요성을 강조하고 추론 예약 및 형성을 위해 시스템에서 사용할 수 있는 정적 정보를 활용할 것을 제안합니다.

  • 00:00:00 이 섹션에서는 Preferred Networks의 Zijian Xu가 ONNX를 중간 표현으로 사용하는 신경망 컴파일러인 PFVM에 대해 설명합니다. 그는 회사를 소개하고 딥 러닝을 사용하여 실제 문제를 해결하는 방법을 설명합니다. 그런 다음 그는 모듈 배포가 아닌 모듈 최적화를 위해 ONNX에 집중합니다. 그는 PFVM이 컴파일러 및 런타임으로 작동하여 내보낸 ONNX를 입력으로 가져오고 이를 최적화하고 타사 API를 사용하여 지정된 백엔드로 모델을 실행한다고 설명합니다. Genji는 장치 및 메모리 최적화를 위해 고객 운영자와 함께 ONNX를 확장하는 방법에 대해 논의하면서 최적화 프로세스를 설명합니다. 또한 모듈 최적화에서 모양 추론의 중요성에 대해 논의하고 세 가지 사례 최적화를 소개합니다. 첫 번째 경우는 요소별 융합입니다.

  • 00:05:00 비디오의 이 섹션에서 발표자는 CUDA에서 계산 그래프를 실행할 때 더 빠른 계산을 위해 커널 범위 오버헤드를 줄이는 것의 중요성에 대해 논의합니다. 그들은 커널 범위를 줄이기 위해 요소별 연산자를 단일 융합 그룹 연산자로 융합할 것을 제안하지만 모든 연산자가 성공적으로 융합될 수 있는 것은 아니라는 점에 주의해야 합니다. 그라디언트 퓨전 그룹 이전에 사업자 방송 가능 여부를 확인해야 합니다. 발표자는 또한 신경망 모델을 최적화하기 위한 모양 추론 및 그래프 단순화의 중요성을 강조합니다. 마지막으로 그들은 모델에 불필요한 연산자가 포함되어 있는지 여부에 대한 질문을 다루고 더 빠른 계산을 위해 일부 최적화가 필요하다고 응답합니다.

  • 00:10:00 이 섹션에서 발표자는 1세대 또는 신경망 및 신경 아키텍처 검색과 같은 프로그램에서 생성된 모델에 불필요한 연산자가 포함될 수 있는 방법에 대해 설명합니다. 그들은 왼쪽 계산 그래프가 노드 5를 계산하기 위해 많은 메모리를 사용하는 예를 사용하여 최적화의 중요성을 보여줍니다. 계산 그래프를 수정하면 메모리 사용량을 줄이면서 동일한 출력을 얻을 수 있습니다. PFVM은 메모리 사용량을 줄이기 위해 자동 체크포인트를 수행할 수 있지만 메모리 사용량을 정확하게 추정하려면 텐서 크기에 대한 지식이 필요합니다. 발표자는 형태 참조의 중요성과 알 수 없는 치수가 대부분의 성형 프레임에서 최적화 기회를 어떻게 제한하는지 강조합니다.

  • 00:15:00 이 섹션에서 발표자는 요소 수혈 및 자동 체크포인트와 같은 특정 작업을 수행할 수 없다는 점과 다이나믹 케이스. 발표자는 동적 사례에 대해 더 많은 추론 기능을 구현할 것을 제안하고 두 텐서의 연결과 같은 사례를 지원할지 여부를 결정하기 위해 사용자의 피드백을 요청합니다. 발표자는 또한 예약 및 형성 추론을 위해 요소 코어 및 mn4와 같은 시스템에서 사용할 수 있는 정적 정보를 활용하는 이점에 대해 논의합니다.
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
PFVM - A Neural Network Compiler that uses ONNX as its intermediate representation
  • 2022.07.13
  • www.youtube.com
PFVM is a neural network compiler developed by Preferred Networks, which relies on ONNX as the Intermediate Representation format. PFVM is used in production...
 

.NET MAUI 커뮤니티 스탠드업 - Mike Parker와 함께하는 ONNX 런타임



.NET MAUI 커뮤니티 스탠드업 - Mike Parker와 함께하는 ONNX 런타임

이 비디오에서 게스트 연사인 Mike Parker는 여러 하드웨어 플랫폼에서 기계 학습 최적화 및 가속화를 가능하게 하는 오픈 소스 및 교차 플랫폼 도구인 ONNX 런타임을 소개합니다. Parker는 ONNX 런타임 사용의 중요성을 설명하고 MobileNet 개체 분류 모델을 사용하여 이미지를 분류하기 위해 .NET MAUI 프로젝트에서 ONNX 런타임을 사용하는 방법을 보여줍니다. 호스트와 Parker는 장치에서 기계 학습 모델을 실행하는 이점과 백엔드 인프라 비용을 피할 수 있는 기능에 대해 논의합니다. 또한 이 팀은 이 주제에 대한 Parker의 블로그와 .NET MAUI 및 Xamarin 지원을 위한 Al Blount와의 파트너십을 비롯한 유용한 리소스를 공유합니다.

  • 00:00:00 .NET MAUI에 대한 커뮤니티 스탠드업의 이 섹션에서 팀은 최적화를 위한 기계 학습 도구인 ONNX Runtime에 대한 지식을 공유하는 최신 클라이언트 앱 고객 자문 팀의 구성원인 Mike Parker를 소개합니다. 여러 하드웨어 플랫폼에서 모델을 가속화합니다. 그는 ONNX Runtime이 어떻게 오픈 소스이자 크로스 플랫폼인지 설명하여 개발자가 기계 학습 애플리케이션에 다양한 프레임워크와 하드웨어를 사용할 수 있도록 합니다. 또한 .NET 커뮤니티가 프로젝트에서 ONNX Runtime을 활용할 수 있는 방법을 보여줍니다.

  • 00:05:00 이 섹션에서는 호스트가 자신과 Onnx Runtime에 대해 논의하기 위해 참석한 게스트 Mike를 소개합니다. 호스트는 .NET MAUI 및 인접한 리포지토리의 일부 PR에 대해 논의하기 전에 먼저 Microsoft 및 커뮤니티의 일부 블로그를 살펴볼 것이라고 언급합니다. 마지막으로 토론을 Mike Park에게 넘겨 Onnx Runtime 라이브러리, 그가 Xamarin에서 이를 어떻게 사용했는지, 주제에 대한 그의 글과 팟캐스트에 대해 이야기할 것입니다. 호스트는 또한 .NET의 20주년이며 .NET MAUI Preview 12가 출시되었다고 언급합니다. 또한 주요 변경 사항에 대해 사용자에게 경고하고 Dave가 커뮤니티 라이브러리 유지 관리자와 함께 작업하고 있다고 언급합니다.

  • 00:10:00 이 섹션에서 연사는 Xamarin이 MAUI로 전환함에 따라 .NET의 통합 노력과 iOS 라이브러리 및 종속성에 대한 재컴파일 및 업데이트의 필요성에 대해 논의합니다. 팀은 현재 기본 라이브러리 및 NuGet 패키지에 대한 모든 바인딩 프로젝트에 대해 이러한 변경 사항을 채택하는 방법을 연구하고 있으며 사용자에게 지침이 제공될 것이라고 확신합니다. 또한 팀은 VS Mac 2022 프리뷰 5의 MAUI 지원 부족에 대해 논의하고 작업 중이지만 먼저 새로운 UI SAC를 사용하여 .NET 6 런타임에서 모든 Xamarin 작업을 다시 빌드해야 한다고 설명합니다. 마지막으로 팀은 Facebook SDK 바인딩의 업데이트를 발표하고 Google 라이브러리와 같은 다른 타사 라이브러리를 업데이트하고 유지하기 위한 노력을 언급합니다.

  • 00:15:00 이 섹션에서 Xamarin 팀은 유지 관리하는 구성 요소에 대해 이야기합니다. 이전에는 주요 초점이었지만 이제는 지원을 위해 가장 중요한 것으로 좁혀지고 있습니다. 팀은 사용자가 .NET 6으로 전환하는 동안 이러한 구성 요소에 대한 종속성이 있는 경우 연락할 것을 권장합니다. 또한 Maui Hello World 자습서 및 .NET Maui 소스 코드 분석 블로그 시리즈에 대해서도 논의합니다. 또한 Z Index 및 UI 사용자 지정에 대한 Andreas의 블로그가 강조되어 Z Index를 사용하여 요소를 서로 쌓는 방법을 보여줍니다.

  • 00:20:00 이 섹션에서 발표자는 사람들이 .NET MAUI를 사용하여 다시 만든 몇 가지 블로그 게시물과 디자인을 보여줍니다. 블로그에는 Xamarin Forms에서 탑승권 디자인 재생성, Xamarin Forms를 사용한 상태 시스템 개발 논의, .NET MAUI 시작 파일 구성, 처리기 아키텍처에 대한 심층 분석, Xamarin Forms에서 JavaScript 양방향 통신에 대한 블로그가 포함됩니다. 그것을 위한 WebView. 이 프레젠테이션은 오늘날 디자인에 얼마나 많은 관심을 기울이고 있는지, Xamarin Forms/MAUI를 보다 확장 가능하고 유용하게 만들고 JavaScript와 바인딩을 보다 효과적으로 사용하는 방법을 보여줍니다.

  • 00:25:00 대본의 이 섹션에서 호스트는 5.0 Xamarin 포럼 서비스 및 새로운 문서의 릴리스를 포함하여 .NET MAUI에 대한 최신 커뮤니티 기여에 대해 논의합니다. 그들은 기여자가 repo 참여에 대한 피드백을 제공하고 커뮤니티 툴킷에서 칩 제어의 가용성을 언급하도록 권장합니다. 호스트는 또한 MAUI의 새로운 기능인 최근 추가된 그림자에 대해 언급하고 이를 수정하여 봇을 멋지게 만들 것을 제안합니다.

  • 00:30:00 이 섹션에서는 Mike Parker가 .NET MAUI 미리 보기 릴리스의 상태에 대한 업데이트를 제공하고 미리 보기 13의 진행 상황을 강조합니다. 레이블 형식 텍스트, 범위, 그리고 스팬 제스처는 모두 플랫폼의 공백을 메우고 있습니다. 또한 커뮤니티는 Xamarin Forms Shell의 탭과 메뉴 항목에 배지를 간단하게 추가할 수 있는 "Galadriel"이라는 새로운 연결된 속성을 공유했습니다. 또한 .NET MAUI 팀은 플랫폼의 시작 성능을 개선하기 위해 노력해 왔으며 프로파일링된 AOT가 있는 Pixel 5에서 앱이 576밀리초 만에 시작하여 결과가 유망합니다.

  • 00:35:00 이 섹션에서는 .NET MAUI Community Standup에서 Xamarin Forms 및 .NET MAUI에서 UI 빌드를 위한 C# 마크업 확장의 가용성에 대해 설명합니다. 이 확장은 UI 개발을 위한 보다 유창한 구문을 제공합니다. 또한 얼굴 인식 및 사진 태깅과 같은 예제와 함께 단일 API 세트를 사용하여 다양한 플랫폼에서 추론을 실행할 수 있는 휴대용 모델인 onnx 런타임에 대해서도 이야기합니다. onnx 런타임은 GitHub에서 사용할 수 있으며 Xamarin 및 모바일 앱에서 사용할 수 있습니다. onnx 런타임을 사용하는 프로세스에는 모델 로드, 입력 준비, 추론 실행 및 사용 가능한 형식으로 출력 처리가 포함됩니다.

  • 00:40:00 비디오의 이 섹션에서 Mike Parker는 Xamarin Forms 앱에서 ONNX 런타임을 사용하여 MobileNet 개체 분류 모델을 사용하여 이미지를 분류하는 방법을 설명합니다. 그는 모델 문서를 따르고 RGB 값을 정규화하는 것의 중요성을 강조합니다. Parker는 또한 입력 및 출력 크기, 모양, 입력 및 출력 이름을 시각화할 수 있는 Netron이라는 유용한 앱을 언급합니다. 앱은 모델을 로드하고 실행하는 단일 버튼일 뿐이며 경고에 상단 레이블을 표시합니다. Parker는 이 모든 것이 클라우드를 포함하지 않고 장치에서 발생한다는 것이 멋지다고 말합니다.

  • 00:45:00 이 섹션에서 연사는 연결 없이 작동하고 백엔드 인프라 비용을 피할 수 있는 기능을 포함하여 장치에서 기계 학습 모델을 실행할 때의 이점에 대해 논의합니다. 또한 클라우드 기반 Microsoft Azure Vision API를 사용한 경험과 ONNX 런타임을 사용하여 더 빠른 처리 시간을 달성할 수 있었던 방법에 대해서도 설명합니다. 또한 플랫폼별 및 모델별 코드를 단일 ONNX 모델로 교체하여 팀 온보딩 앱 경험을 간소화한 방법을 설명합니다. 마지막으로 Azure Custom Vision Service를 사용하여 모델을 준비하고 ONNX가 Xamarin과 함께 작동하도록 하는 Nougat 패키지를 만드는 프로세스에 대해 설명합니다.

  • 00:50:00 비디오의 이 섹션에서 Mike Parker는 ONNX 런타임 작업과 iOS와 같은 AOT가 있는 플랫폼을 지원하기 위해 기본 상호 운용성 코드를 조정하는 방법에 대해 설명합니다. 또한 그는 워크플로 간소화 및 앱의 접근성 향상을 포함하여 이 기술을 사용할 수 있는 실제 시나리오를 설명합니다. 그러나 그는 사전 구축된 모델로 작업하는 것이 전통적인 데이터 과학 배경이 없는 사람들에게는 압도적일 수 있으며 통합할 모델에 대해 선별할 것을 제안합니다. 마지막으로 이 주제에 대한 Mike의 블로그를 포함하여 몇 가지 유용한 리소스가 공유됩니다.

  • 00:55:00 이 섹션에서는 주최자가 Mike Parker의 채용 가능성에 대해 이야기하고 Xamarin Forms 및 .NET Maui에 대한 도움이 필요한 회사를 지원할 수 있는 Al Blount를 소개합니다. 그들은 또한 Maui로 업그레이드하는 Mike 팀의 현재 작업에 대해 간략하게 논의하지만 아직 세부 정보를 공유할 수 없습니다. 호스트는 시청자에게 다가올 .NET 20주년 생일 파티에 참여하고 알려준 것에 대해 감사 인사를 전하며 비디오를 끝냅니다.
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
.NET MAUI Community Standup - ONNX Runtime with Mike Parker
  • 2022.02.03
  • www.youtube.com
Join Maddy Montaquila, David Ortinau, and special guest Mike Parker to learn about using the ONNX Runtime in your Xamarin app for Machine Learning!Community ...
 

[가상 밋업] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)



[가상 밋업] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)

이 비디오는 서로 다른 프레임워크를 사용하여 기계 학습 알고리즘을 훈련하여 상호 운용성 부족으로 이어지는 문제에 대해 논의하고 딥 러닝 모델을 위한 범용 형식을 만드는 것을 목표로 하는 ONNX 및 ONNXRuntime을 소개합니다. ONNX는 신경망을 정적 계산 그래프로 변환하여 추론 중에 성능을 최적화할 수 있습니다. ONNXRuntime을 사용하면 모든 프레임워크를 ONNX 형식으로 변환할 수 있으며 모든 하드웨어 플랫폼을 대상으로 하는 데 사용할 수 있는 가속 라이브러리를 제공합니다. 이 비디오는 ONNX 및 ONNXRuntime을 사용하는 예를 보여주고 C++에서의 사용에 대해 논의하고 프로젝트 및 문서를 더 잘 이해하기 위한 조언을 제공합니다.

Marco Arena와 Matteo Verasani는 또한 기계 학습 모델에 C++에서 ONNX 및 ONNXRuntime을 사용할 때의 이점에 대해 논의하고 프레임워크의 유연성과 성능 저하 없이 다른 프레임워크에서 모델을 쉽게 변환할 수 있는 기능을 강조합니다. 모델을 ONNX 형식으로 변환하는 예제를 제공하고 추론 모드에 ONNXRuntime을 사용하는 방법을 시연하여 기존 Python 모델의 성능 향상을 보여줍니다. 또한 임베디드 시스템 작업과 GPU에서 ONNXRuntime 벤치마킹의 잠재적 이점에 대해 논의합니다. 연사들은 또한 미래의 가상 모임을 언급하고 참석자들을 위한 더 많은 네트워킹 기회를 통합할 수 있기를 희망합니다.

  • 00:00:00 비디오의 이 섹션에서 연사는 서로 다른 프레임워크를 사용하여 다양한 사용 사례에 대한 기계 학습 알고리즘을 훈련할 때 발생하는 문제에 대해 논의하여 상호 운용성 부족을 초래합니다. 구성원이 서로 다른 프레임워크에 대해 다양한 수준의 전문 지식을 가지고 있을 수 있는 팀에서 작업할 때 이는 어려울 수 있습니다. 이 문제를 해결하기 위해 발표자는 네트워크를 공통 형식으로 변환하여 프레임워크 간 상호 운용성을 허용하는 ONNX 및 ONNXRuntime을 소개합니다. 그러면 ONNXRuntime을 통해 변환된 모델을 CPU, GPU 및 FPU를 비롯한 모든 대상 하드웨어에 배포할 수 있습니다.

  • 00:05:00 이 섹션에서 연사는 서로 다른 프레임워크 간의 상호 운용성을 허용하는 딥 러닝 모델의 범용 형식을 목표로 하는 ONNX(Open Neural Network Exchange) 프로젝트에 대해 논의합니다. 이 프로젝트는 다양한 모델 유형과 프레임워크를 프로덕션을 위한 단일 형식으로 변환하는 데 중점을 두고 커뮤니티 중심이며 수많은 회사에서 지원합니다. ONNX는 신경망을 훈련 전에 미리 초기화된다는 점에서 동적 그래프와 다른 정적 계산 그래프로 변환합니다. 정적 그래프는 계산적으로 더 효율적이지만 동적 그래프는 다양한 입력 크기에 대해 더 큰 유연성을 제공합니다.

  • 00:10:00 이 섹션에서 연사는 ONNX가 추론 프로세스에서 매우 유용한 정적 계산 그래프를 제공하는 방법에 대해 논의합니다. Python과 같은 다른 프레임워크에는 동적 계산 그래프가 있지만 ONNX는 학습 및 개발 단계에서 이미 제어된 정적 그래프를 제공하여 보다 최적화된 성능을 허용합니다. 또한 Microsoft의 ONNX 런타임 도구를 사용하면 모든 프레임워크를 ONNX 형식으로 변환할 수 있으며 모든 하드웨어 플랫폼을 대상으로 하는 데 사용할 수 있는 가속 라이브러리를 제공하므로 추론 및 생산을 위한 유용하고 다양한 도구가 됩니다.

  • 00:15:00 비디오의 이 섹션에서 연사는 AI 상호 운용성을 위해 ONNX 및 ONNX Runtime을 사용한 경험에 대해 이야기합니다. Python에서 PyTorch 모델을 생성하고, ONNX 형식으로 변환하고, ONNX Runtime을 배포에 사용하여 파이프라인을 작성하고 GPU 또는 Android 장치와 같은 다양한 플랫폼을 대상으로 지정하는 방법을 설명합니다. 또한 다른 추론 엔진에 비해 ONNX Runtime을 사용하여 성능이 향상되어 최대 4배 더 빠른 결과를 얻을 수 있음을 보여줍니다. ONNX의 유연성을 강조하여 배포 파이프라인을 다시 작성할 필요 없이 Matlab과 같은 다른 프레임워크에서 만든 모델을 ONNX Runtime과 함께 사용할 수 있도록 변환할 수 있습니다.

  • 00:20:00 이 섹션에서는 연사가 C++에서 ONNX 및 ONNXRuntime을 사용하는 프로세스에 대해 논의합니다. 모델을 ONNXRuntime에서 실행하려면 먼저 ONNX 형식으로 변환해야 한다고 설명합니다. TensorFlow 직렬화는 ONNXRuntime에 고유하지 않지만 변환에 사용할 수 있는 오픈 소스 라이브러리가 있습니다. 또한 변환 프로세스를 스크립팅할 가능성과 C++에 비해 ONNX에서 볼 수 있는 개선 수준에 관한 질문에 응답합니다. 그들은 추가적인 벤치마킹과 분석이 필요하다고 지적합니다. ONNXRuntime 리포지토리는 오픈 소스이며 Microsoft에서 지원하며 사용자를 위한 다양한 정보, 가이드 및 예제를 제공합니다.

  • 00:25:00 이 섹션에서는 비디오에서 ONNXRuntime의 기능을 단순함에서 보다 정교한 수준으로 복잡하게 설명합니다. 녹색 열에는 간단한 기계 학습 작업에 충분한 기본 기능이 포함되어 있는 반면, 자홍색 열에는 실행 공급자 및 프로파일링 지원과 같은 약간 더 정교한 기능이 포함되어 있습니다. 빨간색 열은 ONNX 사용자 지정 연산자를 추가하거나 거래에서 조정을 수행하는 기능과 같은 보다 복잡한 작업을 위한 고급 기능을 나타냅니다. 발표자는 또한 C++ 및 Python의 ONNXRuntime에 대한 두 개의 데모 리포지토리에 대한 링크를 제공합니다.

  • 00:30:00 이 섹션에서는 발표자가 C++의 ONNX 및 ONNXRuntime을 소개합니다. 그들은 트레이드 풀을 관리하기 위한 프로그램과 고려 중인 모델을 설정하는 세션 내에서 환경을 만들어야 한다고 설명합니다. 세션의 특성도 사용자 지정할 수 있으며 세션을 사용하여 기본 설정을 실행할 수 있습니다. 또한 ONNXRuntime은 세션을 실행하기 전에 데이터를 관리하는 데 필요한 전처리를 구현하여 모델을 최적화합니다. 이 도구는 또한 입력 및 출력 수, 데이터 유형 및 이름에 대한 조회와 같은 검사 작업을 수행할 수 있습니다. 궁극적으로 사용자는 필요한 형식으로 입력과 텐서를 생성할 수 있습니다.

  • 00:35:00 비디오의 이 섹션에서 발표자는 CPU에 텐서를 할당하고 이를 실행 공급자에게 전송하는 개체를 만드는 방법에 대해 설명합니다. 스피커는 입력 값과 텐서의 모양을 인수로 버퍼에 전달하여 입력 및 출력 텐서를 생성합니다. 그런 다음 출력 값을 OnnxRuntime 라이브러리에 전달하여 출력에 대한 텐서가 생성됩니다. 발표자는 이름을 사용하여 입력 순서를 유연하게 변경할 수 있으므로 추론을 시작하는 것의 중요성을 설명합니다. 데모는 출력 값이 화면에 인쇄되는 방법에 대한 간단한 예를 보여줍니다.

  • 00:40:00 이 섹션에서 발표자는 ONNX 프로젝트 및 문서를 더 잘 이해하려는 사람들을 위한 조언을 제공합니다. ONNX의 더 나은 문서 섹션에 액세스하고 ONNX에서 데이터를 검사한 경험을 자세히 설명하려면 "파트 C"를 살펴보는 것이 좋습니다. 발표자는 또한 다른 패키지 관리자를 통해 ONNX 런타임 라이브러리를 사용할 수 있지만 아키텍처와 공급자가 다양하기 때문에 라이브러리를 다시 컴파일할 것을 권장한다고 설명하고 동일한 코드를 컴파일하여 CPU 또는 GPU를 대상으로 하는 두 개의 ONNX 런타임 패키지를 만드는 방법을 보여줍니다.

  • 00:45:00 이 섹션에서 연사는 C++에서 DLL을 사용하는 예제와 함께 ONNX 런타임에 대해 설명합니다. 코드에 추가되는 세션 옵션은 클라이언트의 선호도에 따라 달라지며 추가된 프로바이더를 지정된 순서대로 사용하려고 합니다. 발표자는 시스템이 RAM 및 GPU 사용량을 차지하는 방법에 대한 샘플 애플리케이션을 제공합니다. 1,000개의 이미지 데이터 세트에 사전 훈련된 기본 게임 AI 리넷을 예로 활용했습니다. 시스템에는 사후 처리 및 사전 처리 요구 사항이 있습니다.

  • 00:50:00 비디오의 이 섹션에서 화자는 Python을 사용한 이미지 전처리와 프로세스를 단순화하기 위한 확장 소스 사용에 대해 논의합니다. 이미지는 정규화되기 전에 최적의 크기로 조정되고 플로팅으로 변환됩니다. 정규화 프로세스에는 값을 평균으로 나누고 표준 편차를 수행하는 작업이 포함됩니다. 신경망의 사후 처리에는 간단한 소프트맥스 정규화가 포함됩니다. 발표자는 또한 최소한의 코드로 ONNX Runtime을 사용하여 이미지를 열고 처리하고 출력하는 방법을 시연합니다. 텍스트 파일에서 클래스를 읽는 데 사용되는 클래스는 단순하며 불필요한 상용구 코드를 피하기 위해 몇 가지 유틸리티가 사용됩니다.

  • 00:55:00 이 섹션에서는 연사가 C++에서 ONNXRuntime을 사용하여 신경망의 추론 시간을 측정하는 프로세스에 대해 설명합니다. 그는 이전에 논의한 네트워크에 추론 부분을 추가하고 시스템 시계를 사용하여 추론 시간을 측정했다고 설명합니다. 그런 다음 프로파일링 목적으로 ONNXRuntime에서 사용자 지정 로거를 사용하는 방법을 시연합니다. 연사는 또한 University of Modena와 공동으로 개발한 별도의 모바일 네트워크와 전처리 및 후처리와 관련된 복잡성에 대해 간략하게 설명합니다.

  • 01:00:00 이 섹션에서 발표자는 감지기의 출력에 대해 논의하고 곰 및 신호와 같은 물체에 경계 상자를 그리는 방법을 보여줍니다. 또한 ONNXRuntime의 사용과 이것이 성능 최적화를 위한 프로파일링 활성화를 포함하여 세션 옵션 및 조정을 허용하는 방법에 대해서도 언급합니다. 결과 추적 파일을 자세히 검사하여 모델을 초기화하고 이미지에서 실행하는 데 걸리는 시간(사용된 연산자 및 선택된 공급자 포함)을 확인할 수 있습니다. 그들은 또한 그래프를 실행하기 전에 그래프를 최적화하는 ONNX의 기능을 언급하여 성능을 향상시키고 모델을 로드하는 데 걸리는 시간을 단축할 수 있습니다.

  • 01:05:00 이 섹션에서 발표자는 다양한 대상에서 모델의 이식성에 영향을 줄 수 있는 최적화를 활성화 또는 비활성화하여 모델을 최적화하는 방법에 대해 설명합니다. 다양한 수준의 최적화와 각각이 모델의 성능에 미치는 영향을 살펴봅니다. 발표자는 병렬 실행 모드를 활성화하면 모델이 여러 스레드를 활용할 수 있지만 경우에 따라 성능에 큰 영향을 미치지 않을 수 있음을 보여줍니다. 또한 유틸리티를 사용하여 여러 이미지를 병렬 처리할 가능성도 언급합니다. 마지막으로 발표자는 최적화된 모델의 로드 시간 감소에서 알 수 있듯이 최적화가 모델의 성능에 눈에 띄는 영향을 미칠 수 있다고 언급합니다.

  • 01:10:00 이 섹션에서는 Marco Arena와 Marco Verasani가 C++에서 ONNX 및 ONNX Runtime을 사용할 때의 이점에 대해 논의합니다. 주요 이점 중 하나는 ONNX를 형식으로 허용하는 단일 추론 계층을 보유하여 모델 생성을 위해 다양한 프레임워크를 사용할 때 이식성과 유연성을 허용한다는 것입니다. 이 기능은 여러 팀에서 다양한 프레임워크를 사용할 수 있고 프로덕션에 표준 추론 파이프라인이 필요한 상황에서 특히 유용합니다. 또한 C++에서 ONNX Runtime을 사용하면 딥 러닝 모델을 위한 더 빠르고 최적화된 런타임 성능을 얻을 수 있습니다. 전반적으로 ONNX 에코시스템은 딥 러닝 모델의 성능을 미세 조정하고 최적화하기 위한 많은 옵션과 기회를 제공합니다.

  • 01:15:00 이 섹션에서 연사는 기계 학습 모델에 대해 C++에서 ONNX 및 ONNXRuntime을 사용할 때의 이점에 대해 논의합니다. 프레임워크의 유연성과 성능 저하 없이 프레임워크 간 변환이 용이하기 때문입니다. 그들은 또한 ONNXRuntime이 Linux에서 지원된다고 언급하고 모델을 프로토타이핑하고 ONNX 형식으로 내보내는 데 Python 및 Jupyter 노트북을 사용하는 방법을 시연합니다. 작은 자습서를 예로 사용하여 모델을 다른 프레임워크에서 ONNX로 변환하는 방법을 보여주고 모델의 계산 그래프를 시각화하기 위한 Netron 도구의 유용성을 강조합니다. 연사는 시청자가 질문을 하고 도구에 대한 지식을 공유하도록 권장합니다.

  • 01:20:00 이 섹션에서는 연사가 모델을 ONNX 형식으로 변환하고 C++에서 ONNXRuntime을 사용하여 추론 모드에서 실행하는 과정에 대해 논의합니다. 컴퓨팅 그래프를 생성하고 입력 및 출력 차원을 정의하는 방법과 시간을 사용하여 CPU 및 GPU에서 모델의 성능을 벤치마킹하는 방법을 보여줍니다. 또한 변환기 연산자를 활용하고 Hugging Face 라이브러리에서 구현되는 인기 있는 자연어 처리 모델 BERT의 사용을 보여줍니다. 연사는 CPU 또는 GPU와 함께 ONNXRuntime을 사용하기 위한 올바른 패키지 설치의 중요성을 강조합니다.

  • 01:25:00 비디오의 이 섹션에서 발표자는 Python에서 BERT 모델을 ONNX 형식으로 변환하는 방법을 보여줍니다. 프로세스에는 모델의 입력을 정의하고 "torch.onnx.export" 기능을 사용하여 모델을 변환하는 작업이 포함됩니다. 발표자는 ONNX가 각 버전에 연산자를 추가하여 특정 모델에 필요한 연산자와 함께 올바른 버전의 ONNX에서 작업할 필요성을 강조한다고 설명합니다. 동적 축은 또한 자연어 처리에서 가변 시퀀스 길이와 같은 동적 입력/출력 형태를 허용하는 중요한 기능으로 강조됩니다. 마지막으로 발표자는 모델에 대한 추론을 수행할 때 성능 측면에서 Python과 ONNX를 비교합니다.

  • 01:30:00 가상 모임의 이 섹션에서 연사는 C++에서 ONNX 및 ONNXRuntime을 사용한 작업 시연을 공유합니다. ONNXRuntime을 통해 실행되는 클래식 Python 모델의 추론에서 볼 수 있는 성능 향상을 보여줍니다. 또한 사용자가 모델의 정적 계산 그래프를 보고 예상되는 입력 및 출력 유형을 포함하여 수행 중인 작업을 볼 수 있는 "네트워크 뷰어"라는 도구를 시연합니다. 이 도구는 또한 변환에 사용된 ONNX 버전과 변환 프로세스 중에 사용된 오프셋을 보여줍니다. 연사는 시청자에게 피드백을 요청하고 참석자가 의견을 제공할 수 있는 링크를 제공합니다.

  • 01:35:00 이 섹션에서는 Marco Arena와 Matteo Verasani가 GPU, FGA 및 CPU를 포함한 임베디드 시스템용 플랫폼을 연구하는 작업에 대해 이야기합니다. 그들은 이러한 임베디드 시스템에서 물체 감지를 위해 4개의 신경망을 실행하고 전력 소비 및 추론 속도 측면에서 결과를 분석했습니다. 또한 임베디드 시스템용 1단계 감지기 사용의 중요성에 대해 논의하고 ONNX 및 ONNXRuntime용 리포지토리에 대한 링크를 제공합니다. 그들은 GPU에서 ONNXRuntime 벤치마킹의 잠재적 이점을 언급하고 Microsoft의 ONNXRuntime 팀을 향후 이벤트에 초대하는 데 관심을 표명합니다. 마지막으로 다가오는 온라인 이벤트와 향후 모임에 시청자를 초대합니다.

  • 01:40:00 비디오의 이 섹션에서는 대면 모임에 돌아오지 않는 이유를 찾는 방법과 온라인 모임에 대해 참석자들로부터 양보를 받은 것이 얼마나 운이 좋은지에 대해 이야기합니다. 또한 Malattia, Verasani, ONNX 및 ONNX Runtime 리포지토리에서 보여준 자료를 기반으로 Python 섹션을 제거하고 데모의 초기 부분에 집중하는 것을 포함하는 가상 모임 시리즈에 대한 예정된 계획에 대해서도 논의합니다. 주제에 대한 자세한 정보를 찾는 사람들을 위해 제공되는 링크와 공식 소스도 있습니다. 궁극적으로 그들은 더 많은 네트워킹 시간을 포함하고 저녁 식사 후에 머무르는 데 관심이 있는 사람들을 위해 채팅을 열어두기를 희망하지만 온라인 모임의 한계를 인정합니다.
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
[Virtual meetup] Interoperable AI: ONNX e ONNXRuntime in C++ (M. Arena, M. Verasani)
  • 2020.10.22
  • www.youtube.com
Relatori: Marco Arena, Mattia Verasani📍 Slides: https://www.italiancpp.org/interoperable-ai-arena-verasani/💻 Demo: https://github.com/ilpropheta/onnxruntim...
 

[CppDay20] 상호운용 AI: ONNX & ONNXRuntime in C++ (M.Arena, M.Verasani)



[CppDay20] 상호운용 AI: ONNX & ONNXRuntime in C++ (M.Arena, M.Verasani)

기계 학습 및 딥 러닝 알고리즘의 사용이 증가하고 있으며 이러한 알고리즘을 다양한 플랫폼에 배포할 수 있는 도구가 필요합니다. ONNX 도구는 서로 다른 프레임워크와 플랫폼 간의 상호 운용성을 제공하므로 개발자가 특정 프레임워크나 플랫폼에 익숙하지 않은 경우에도 알고리즘을 한 프레임워크에서 다른 프레임워크로 변환하고 다른 장치에 배포할 수 있습니다. ONNX Runtime은 사용자 지정 가속기를 활용하여 추론 단계에서 모델을 가속화하고 다양한 하드웨어 플랫폼을 대상으로 할 수 있는 추론 엔진입니다. 발표자는 선형 회귀 및 신경망 모델의 예와 함께 C++ 프로그래밍에서 ONNX 및 ONNX Runtime을 사용하는 방법을 보여줍니다. 또한 네트워크 실행 미세 조정, 로드 시간 최적화 및 순차 이미지 실행에 ONNX 및 ONNX Runtime을 사용할 때의 이점에 대해서도 설명합니다.

  • 00:00:00 비디오의 이 섹션에서 연사는 다양한 애플리케이션에 대한 머신 러닝 및 딥 러닝 알고리즘의 사용 증가와 이러한 알고리즘을 다양한 플랫폼에 배포할 수 있는 도구의 필요성에 대해 논의합니다. 서로 다른 프레임워크와 플랫폼 간의 상호 운용성을 제공하는 ONNX라는 도구를 소개합니다. 특정 프레임워크나 플랫폼에 익숙하지 않더라도 개발자가 ONNX를 사용하여 한 프레임워크에서 다른 프레임워크로 알고리즘을 변환하고 다른 장치에 배포하는 방법을 설명합니다. 연사는 Python 알고리즘을 ONNX 형식으로 변환한 다음 Core ML 프레임워크로 변환하여 Apple 장치에 배포하는 예를 사용합니다. 이들은 딥 러닝 및 머신 러닝 알고리즘을 다양한 플랫폼에서 보다 쉽게 액세스하고 배포할 수 있도록 만드는 ONNX의 유용성을 강조합니다.

  • 00:05:00 이 섹션에서는 연사가 상호 운용 가능한 AI를 허용하는 도구인 ONNX 및 ONNX Runtime에 대해 설명합니다. ONNX를 사용하면 각 프레임워크에 대한 지식 없이도 PyTorch 및 Tensorflow와 같은 다양한 딥 러닝 프레임워크 간에 모델을 전송할 수 있습니다. Microsoft에서 제공하는 ONNX Runtime은 사용자 지정 가속기를 활용하여 추론 단계에서 모델을 가속화할 수 있는 추론 엔진입니다. 다양한 하드웨어 플랫폼을 대상으로 할 수 있으며 사용자가 C++에서 고유한 추론 엔진을 만들 필요가 없습니다.

  • 00:10:00 이 섹션에서 연사는 기계 학습 모델에 ONNX 형식을 사용할 때의 이점과 다양한 교육 프레임워크에 제공되는 상호 운용성에 대해 논의합니다. 딥 러닝 알고리즘을 개발하고, 이를 ONNX 형식으로 변환하고, ONNX 런타임 추론 엔진을 사용하여 다양한 플랫폼과 프로그래밍 언어에서 모델을 실행하기 위한 파이프라인을 설명합니다. 연사는 또한 PyTorch 및 scikit-learn과 같은 다른 프레임워크와 비교하여 ONNX 런타임을 사용할 때 알고리즘 성능이 크게 향상되었음을 보여주는 성능 그래프를 제시합니다. 마지막으로 Marco가 인계를 받아 C++ 프로그래밍에서 ONNX 런타임 엔진을 사용하는 방법에 대해 설명합니다.

  • 00:15:00 이 섹션에서 발표자는 기계 학습 프레임워크 간의 상호 운용성 경험에 대해 이야기하고 이 목표를 달성하기 위한 중요한 노력으로 ONNX 프로젝트를 소개합니다. 프레임워크 간 모델 변환 시 많은 변환 문제가 발생하지 않았다고 언급하지만, 연산자가 ONNX 형식 또는 ONNX Runtime 형식으로 지원되지 않는 경우 주요 문제가 발생합니다. 연사는 또한 변환 문제에 대한 질문에 답하고 ONNX에서 지원하지 않는 연산자가 변환 문제를 일으킬 수 있다고 설명합니다.

  • 00:20:00 이 섹션에서 연사는 TensorFlow를 ONNX로 변환한 경험에 대해 이야기하고 변환 문제가 많지 않다고 언급합니다. 또한 C++에서 텐서를 조작할 때 디버깅 및 문제 해결에 대해 논의하고 이를 위해 익스텐서 또는 Python과 같은 다른 라이브러리를 사용하는 방법에 대해 언급합니다. 사용자가 원하는 아키텍처와 프로그래밍 언어를 선택하고 C++에서 ONNXRuntime의 사용을 시연할 수 있는 ONNX의 진입점인 onx.ai를 소개합니다. 그들은 코드가 GPU에 대해 동일하며 유일한 차이점은 연결된 라이브러리라고 언급합니다.

  • 00:25:00 이 섹션에서 발표자는 ONNXRuntime을 사용하여 모델에 대한 추론을 로드, 검사 및 실행하는 데모를 보여줍니다. 그는 로그 또는 스레딩 사용자 지정과 같은 선택적 기능을 사용하여 기본 API에 대한 환경을 만드는 것으로 시작합니다. 그런 다음 경로 또는 바이트 스트림에서 로드할 수 있는 특정 모델에서 실행할 추론을 나타내는 세션을 만듭니다. 그는 할당자를 사용하여 입력 및 출력의 수와 이름과 같은 모델 정보를 검사하는 방법을 보여줍니다. 그는 이 데모가 원시 라이브러리를 보여주고 실제 상황에서 문자열 및 기타 복잡성 관리를 피하기 위해 래퍼가 사용된다는 점에 주목합니다.

  • 00:30:00 이 섹션에서 발표자는 간단한 선형 회귀 모델과 CreateTensor라는 외부 API를 사용하여 데이터를 복사하지 않고 네트워크에 입력을 전달하는 방법에 대해 설명합니다. 화자는 문서화가 불분명할 때 C++ api 아래의 c api로 가는 것이 중요하다고 강조한다. 또한 부분 출력 검색 및 출력 이름 사용자 지정을 포함하여 추론 세션을 실행할 때 사용할 수 있는 다양한 옵션에 대해 설명합니다. 마지막으로 그들은 출력 값이 벡터에 저장되고 이전에 할당된 동일한 텐서라는 점에 주목합니다.

  • 00:35:00 이 섹션에서 발표자는 get tensor mutable data 함수를 사용하여 C++에서 데이터에 액세스하는 방법과 유형 삭제로 인해 사용되는 유형을 지정해야 하는 필요성에 대해 논의합니다. 제공된 예제는 이 방법을 사용하여 값을 표준 출력으로 인쇄하는 방법을 보여줍니다. 발표자는 또한 텐서 및 출력 버퍼 할당에 주의해야 할 필요성과 미리 할당된 출력 버퍼를 사용하는 방법에 대해 언급합니다. 그런 다음 토론은 CPU에 대해 ONNXRuntime을 실행하기 위한 기본 선택으로 Microsoft ML ONNXRuntime GPU 패키지를 사용하여 GPU 실행 공급자로 선형 모델을 실행하는 것으로 이동합니다. 마지막으로 발표자는 비전 네트워크를 위한 두 가지 데모 프로젝트인 ResNet이라는 분류기와 MobileNet이라는 탐지기를 간략하게 소개합니다. 데모 코드는 이전 예와 유사하며 발표자는 이러한 네트워크와 관련된 전처리 및 후처리를 강조합니다.

  • 00:40:00 이 섹션에서 발표자는 ONNXRuntime을 사용하여 외부 타이머를 사용하여 신경망 실행을 프로파일링하는 방법을 보여줍니다. 세션 생성 중에 프로파일링 옵션을 추가함으로써 ONNXRuntime은 각 단계에 소요된 실행 시간과 실행된 그래프의 모든 연산자 폭발을 포함하는 JSON 파일을 생성할 수 있습니다. 이 도구는 모델이 CPU에서 실행되는지 GPU에서 실행되는지 또는 순차적으로 실행되는지 병렬로 실행되는지와 같은 추가 세부 정보를 제공할 수 있습니다. 프로파일링은 네트워크 실행을 미세 조정하고 다른 가속기에서 실행 중인지 확인하는 데 도움이 될 수 있습니다.

  • 00:45:00 이 섹션에서 연사는 C++에서 ONNX 및 ONNXRuntime을 사용하여 모델의 로드 시간과 실행 시간에 대한 최적화의 영향을 보여줍니다. 최적화를 비활성화하면 실행 시간이 훨씬 길어지고 활성화하면 로딩 시간이 길어집니다. 그러나 최적화와 로딩 시간의 균형을 맞추는 최적화된 버전의 모델을 저장할 수 있습니다. 연사는 사용 가능한 다양한 옵션을 사용하여 모델을 최적화하고 저장하는 방법을 청중에게 보여줍니다. 또한 발표자는 병렬 실행에 대해 간략하게 언급하고 이미지 배치의 처리 시간을 크게 줄일 수 있는 방법을 보여줍니다.

  • 00:50:00 이 섹션에서 발표자는 순차 이미지의 실행과 각 이미지의 실행 시간이 길어지는 글로벌 스레드 풀의 경합에 대해 설명합니다. 그들은 또한 단일 입력에 대한 시간 측정을 개선하기 위한 프로파일링 도구의 사용과 이미지당 실행되는 모든 연산자의 폭발적 증가에 대해 언급합니다. 발표자는 간단한 ResNet 분류기에서 이미지 전처리에 사용되는 Python의 numpy와 유사한 텐서 조작을 위한 Extensor 라이브러리의 사용법을 설명합니다. 사용자 지정 연산자, 메모리 영역 및 할당자와 같은 고급 기능과 함께 기본, 중간 및 고급 수준에 대한 ONNX Runtime 구분도 언급됩니다. 데모 및 슬라이드에 대한 링크와 함께 거래 지원 및 Python 예제에 대해서도 설명합니다.

  • 00:55:00 이 섹션에서 발표자는 임베디드 장치에 유용한 1단계 감지기에 초점을 맞춰 개체 감지 알고리즘에 대해 수행한 벤치마크에 대해 논의합니다. 그들은 FPGA, GPU 및 CPU에 대해 벤치마킹했으며 NVIDIA 장치, Intel Core E7 CPU 및 FPGA가 특정 종류의 작업에 가장 적합한 플랫폼임을 발견했습니다. 그들은 또한 Python에서만 가능하지만 ONNX에서 학습 모델에 대한 일부 지원이 있다고 언급했습니다. 프로덕션에서 ONNXRuntime 사용을 고려할 것인지 묻는 질문에 그들은 이미 테스트 및 프로덕션으로 전환하는 데 ONNXRuntime을 사용하고 있다고 말했습니다. 그들은 또한 Microsoft가 Windows ML을 포함한 많은 프로젝트에서 이를 사용하고 있으며 3년 동안 개발 중이라고 언급했습니다.
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
[CppDay20] Interoperable AI: ONNX & ONNXRuntime in C++ (M. Arena, M.Verasani)
  • 2020.12.02
  • www.youtube.com
Event page: https://italiancpp.org/cppday20/Slides: https://github.com/italiancpp/cppday20---ONNX is an open source format built to represent machine learnin...
 

ONNX Runtime 및 Hugging Face로 기계 학습 가속화



ONNX Runtime 및 Hugging Face로 기계 학습 가속화

"ONNX Runtime 및 Hugging Face로 머신 러닝 가속화" 비디오에서는 ONNX 런타임을 쉽게 적용하여 교육에서 추론으로 변환기 모델을 가속화하는 데 중점을 둔 Hugging Face의 Optimum 라이브러리 생성에 대해 설명합니다. 이 라이브러리는 트랜스포머 라이브러리와 하드웨어 가속 사이의 브리지를 단순화하여 프로덕션 성능을 위한 사용하기 쉬운 툴킷을 생성합니다. ONNX Runtime에서 제공하는 최적화를 적용함으로써 사용자는 모든 하드웨어 가속의 이점을 누릴 수 있으므로 추론 파이프라인이 더 빨라집니다. Hugging Face 커뮤니티 내 협업은 이러한 가속된 추론 파이프라인 클래스를 사용하여 시퀀스 간 모델 최적화를 가능하게 하고 있으며, 종단 간 예에서는 Optimum Library를 사용하면 처리량을 44% 늘리거나 대기 시간을 줄일 수 있는 것으로 나타났습니다. 원래 모델 정확도의 99.6%.

  • 00:00:00 이 섹션에서는 Hugging Face의 Jeff가 쉽게 액세스할 수 있는 사전 학습된 모델 및 도구를 통해 전 세계 모든 회사에서 변압기 모델의 기능에 액세스할 수 있도록 하는 회사의 목표에 대해 설명합니다. 그는 전이 학습과 주의가 필요한 전부라고 설명하면서 종이는 기계 학습 분야를 변화시켰고, 자연어 처리 작업에서 획기적인 성능을 달성했으며 기계 학습의 모든 단일 양식에서 최첨단 결과를 생성했습니다. Jeff는 ONNX 런타임을 쉽게 적용하여 변압기 모델을 가속화하도록 설계된 Optimum 라이브러리를 소개하여 엔지니어와 소프트웨어 개발자가 프로덕션에서 이러한 모델을 보다 쉽게 사용할 수 있도록 합니다.

  • 00:05:00 이 섹션에서 발표자는 훈련에서 추론까지 변환기 모델을 가속화하는 데 초점을 맞춘 Hugging Face Optimum 라이브러리의 생성에 대해 논의합니다. 라이브러리는 프로덕션 성능 전용 고급 API를 사용하여 하드웨어 가속을 위한 참조 툴킷을 제공합니다. Optimum 내의 Onnx Runtime 패키지는 교육을 가속화하는 방법인 DeepSpeed의 기본 통합을 제공합니다. Optimum은 또한 그래프 모델을 단순화하는 Ort Optimizer, 가중치를 최적화하는 Rt Quantizer를 제공하고 특정 실행 공급자를 대상으로 하드웨어별 최적화를 활용합니다. 전반적으로 Optimum은 트랜스포머 라이브러리와 하드웨어 가속 사이의 브리지를 단순화하여 프로덕션 성능을 위한 사용하기 쉬운 툴킷을 생성합니다.

  • 00:10:00 이 섹션에서는 연사가 ONNX Runtime 및 Hugging Face의 최적화 라이브러리를 사용하여 기계 학습 모델을 최적화하는 방법에 대해 이야기합니다. 작업용 자동 모델에서 작업용 RT 모델로 전환하면 사용자는 ONNX Runtime에서 제공하는 최적화를 쉽게 적용하고 모든 하드웨어 가속의 이점을 누릴 수 있으므로 추론 파이프라인이 더 빨라집니다. Hugging Face 커뮤니티는 또한 이러한 가속화된 추론 파이프라인 클래스를 사용하여 시퀀스 간 모델 최적화를 지원하기 위해 협력하고 있습니다. 블로그 게시물에 요약된 종단 간 예는 Optimum Library를 사용하면 원래 모델 정확도의 99.6%를 보존하면서 처리량이 44% 증가하거나 대기 시간이 감소할 수 있음을 보여줍니다.
Accelerating Machine Learning with ONNX Runtime and Hugging Face
Accelerating Machine Learning with ONNX Runtime and Hugging Face
  • 2022.07.13
  • www.youtube.com
Hugging Face has democratized state of the art machine learning with Transformers and the Hugging Face Hub, but deploying these large and complex models into...
 

ONNX, Triton 및 Seldon을 사용하여 대규모 ML 추론 가속화 | PyData 글로벌 2021



ONNX, Triton 및 Seldon을 사용하여 대규모 ML 추론 가속화 | PyData 글로벌 2021

Seldon Technologies의 Alejandro Saucedo는 "ONNX, Triton 및 Seldon을 통한 대규모 ML 추론 가속화 | PyData Global 2021" 비디오에서 기계 학습 추론 확장 문제와 ONNX 및 Triton을 사용하여 모델을 최적화하고 생산하는 방법에 대해 설명합니다. GPT-2 TensorFlow 모델을 사용 사례로 사용하는 세션에서는 사전 처리, 최적의 토큰 선택, Tempo 및 Triton 추론 서버를 사용한 모델 배포를 다룹니다. Saucedo는 재현성과 규정 준수를 보장하면서 인프라 복잡성을 추상화하고 손쉬운 배포를 용이하게 해야 할 필요성을 강조합니다. 이 강연은 종단 간 교육 및 배포 구성 요소를 위한 오픈 소스 프로젝트와의 협업으로 마무리됩니다.

  • 00:00:00 이 섹션에서는 Alejandro Saucedo가 자신과 기계 학습 배포 및 모니터링에 중점을 둔 회사인 Seldon Technologies를 소개합니다. 그는 세션이 GPT-2 TensorFlow 모델을 사용 사례로 사용하여 실용적인 접근 방식을 취함으로써 규모에 맞게 기계 학습 추론을 가속화하는 문제를 다룰 것이라고 설명합니다. 목표는 ONNX를 사용하여 모델을 최적화하고 Kubernetes에서 생산하기 전에 Tempo라는 도구를 사용하여 로컬에서 테스트하는 것입니다. 주요 초점은 데이터 과학 실무자가 데이터 과학 측면에 집중할 수 있도록 기본 인프라 복잡성을 추상화하는 것입니다. 또한 Saucedo는 GPT-2가 무엇인지와 그 응용 프로그램에 대해 설명하면서 훈련 및 추론을 위해 상당한 양의 컴퓨팅이 필요한 비교적 복잡한 모델임을 언급합니다.

  • 00:05:00 비디오의 이 섹션에서 발표자는 사전 훈련된 모델, 특히 GPT-2의 사용과 이를 게임 및 코드 생성과 같은 다양한 애플리케이션에 활용할 수 있는 방법에 대해 설명합니다. 연사는 Hugging Face 라이브러리를 사용하여 사전 훈련된 GPT-2 모델을 가져오는 방법을 설명하고 전처리 및 추론에 사용되는 토크나이저 및 헤드 모델을 포함한 모델 구성 요소에 대해 설명합니다. 그런 다음 화자는 토크나이저를 사용하여 사람이 읽을 수 있는 문장을 사전 처리하고 생성 기능을 사용하여 20개의 토큰을 예측하는 예를 안내합니다. 마지막으로 연사는 모델에 대한 추론을 여러 번 실행하는 생성 함수의 기본 워크플로우와 토크나이저의 디코더를 사용하여 기계가 읽을 수 있는 출력을 사람이 읽을 수 있는 형식으로 다시 변환하는 방법을 설명합니다.

  • 00:10:00 이 섹션에서 연사는 모델에 대한 최적의 토큰을 선택하는 프로세스와 실무자가 모델을 확장할 때 직면하는 문제를 설명합니다. 문제에는 특수 하드웨어에 대한 요구 사항, 구성 요소 간의 복잡한 종속성, 재현성 및 규정 준수에 대한 요구 사항이 포함됩니다. 그런 다음 연사는 업계에서 널리 채택되고 Python 또는 PyTorch 모델을 최적화된 서버가 최적의 성능을 위해 읽고 수정할 수 있도록 표준화된 형식으로 변환할 수 있는 ONNX 형식을 소개합니다. 그러나 ONNX로 변환할 필요는 없으며 실무자는 여전히 모델을 직접 배포할 수 있습니다. 발표자는 모델 배포 및 확장 프로세스를 간소화하는 Tempo 프레임워크도 소개합니다.

  • 00:15:00 이 섹션에서는 발표자가 Tempo 및 Triton 추론 서버를 사용하여 모델을 생산하는 방법에 대해 설명합니다. 첫 번째 단계는 GPT-2 모델에 대한 Tempo 래퍼를 정의한 다음 Nvidia의 최적화된 서버에서 최적화된 모델을 실행하는 것입니다. 다음으로 기계 판독 가능 토큰을 사람이 판독 가능한 문자열로 변환하도록 사용자 지정 변환기 논리를 정의하여 사용자가 쉽고 간단한 방식으로 모델과 상호 작용할 수 있도록 해야 합니다. Docker에서 로컬로 모델을 테스트한 후 간단한 명령으로 Kubernetes 스택에 배포할 수 있습니다. 래퍼를 정의하기 위한 코드가 표시되고 발표자는 이 방법을 통해 다양한 유형의 모델 프레임워크를 사용할 수 있으므로 ML 추론을 생산하는 데 유용한 도구라고 설명합니다.

  • 00:20:00 이 섹션에서 연사는 ONNX 및 Triton과 함께 PyTorch 모델을 사용하여 사용자 지정 변환기 논리를 만드는 방법에 대해 설명합니다. 먼저 스크립트는 문자열 변환 및 예측 기능을 사용하여 이 사용자 지정 논리를 통해 토큰을 보내는 방법을 설명합니다. 그런 다음 연사는 토큰을 반복하고 응답을 생성하기 전에 GPT2 모델에서 아티팩트를 로드하고 예측 기능을 REST 엔드포인트로 정의하는 방법을 설명합니다. 중요한 점은 모델을 통해 토큰을 전달하고 여러 실행을 반복함으로써 이 복잡한 인프라에서 문자열을 반환할 수 있다는 것입니다. 또한 발표자는 이 접근 방식을 원격 배포 기능을 통해 Kubernetes에 쉽게 배포할 수 있다고 언급합니다.

  • 00:25:00 이 섹션에서 발표자는 특히 ONNX로 GPT-2 TensorFlow 모델을 최적화하고 Docker를 사용하여 Triton으로 실행한 다음 모범 사례를 따라 Kubernetes에 배포하는 데 중점을 둔 대규모 기계 학습 가속화에 대해 논의합니다. 목표는 기본 인프라의 누출을 최소화하고 최소한의 노력으로 안정적인 배포를 보장하는 것입니다. 발표자는 또한 Tempo 및 Metaflow 팀과 협력하여 오픈 소스 프로젝트에서 종단 간 교육 및 배포 구성 요소를 제공한다고 언급합니다. 토크는 Q&A 세션으로 마무리됩니다.
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
Accelerating ML Inference at Scale with ONNX, Triton and Seldon | PyData Global 2021
  • 2022.01.19
  • www.youtube.com
Accelerating ML Inference at Scale with ONNX, Triton and SeldonSpeaker: Alejandro SaucedoSummaryIdentifying the right tools for high performant production ma...
 

AI Show Live - 에피소드 62 - ONNX 런타임을 사용한 다중 플랫폼 추론



AI Show Live - 에피소드 62 - ONNX 런타임을 사용한 다중 플랫폼 추론

AI Show Live의 "ONNX Runtime을 사용한 다중 플랫폼 추론" 에피소드에서 호스트는 ONNX Runtime 프레임워크를 사용하여 여러 플랫폼에서 초고해상도 모델 및 개체 감지 모델을 배포하는 방법을 보여줍니다. 모바일 및 웹 플랫폼 모두에 대한 전처리 및 후처리 단계에 대해 논의하고, 단일 솔루션 사용의 이점을 시연하고, PyTorch 모델을 ONNX 모델로 변환하는 프로세스를 설명하고, ONNX로 추론을 위해 데이터를 전처리하는 방법을 보여줍니다. 실행 시간. 또한 C#의 Onnx Runtime을 사용하여 BERT 자연어 처리 모델을 구현하는 방법을 보여줍니다. 코드 및 오픈 소스 모델은 사용자 솔루션에 맞게 사용자 정의할 수 있습니다.

AI Show Live의 두 번째 부분에서 발표자는 ONNX Runtime을 사용한 추론 실행과 관련된 다양한 주제를 다룹니다. ONNX 추론 예제의 예제를 사용하여 텍스트 분류 프로세스를 시연하고 C#에서 BERT 분류 모델을 구축하는 데 필요한 패키지 및 도구 설치를 탐색합니다. 또한 VS 2022에서 IntelliCode를 사용하는 방법에 대해 논의하고 텐서 생성, ONNX 런타임 추론 세션 구성, 출력 후처리를 포함하여 모델 추론을 준비하는 단계를 안내합니다. 또한 모델 문서를 참조하고 정확한 결과를 위해 올바른 토크나이저를 선택하는 것의 중요성을 다룹니다.

  • 00:00:00 AI Show Live의 이 섹션에서는 진행자 Cassie Breviu가 ONNX Runtime 팀의 인턴인 Victor, Kalia 및 David를 특별 게스트로 소개합니다. ONNX Runtime 프레임워크를 사용하는 모바일 및 웹의 객체 감지 모델. 이 프로젝트는 초고해상도 출력을 통해 이미지에서 개체 감지를 개선하여 다중 플랫폼 배포를 위한 ONNX Runtime의 기능을 시연하는 것을 목표로 합니다.

  • 00:05:00 이 섹션에서는 호스트가 React Native 및 Expo를 사용하여 모바일 및 웹용 다양한 플랫폼에 배포할 수 있는 앱을 빌드하는 프로젝트를 소개합니다. 그들은 React Native의 기본 모듈 기능을 사용하면 JavaScript 코드에서 사용할 수 있는 C++ 및 Java와 같은 다른 언어로 함수 및 모델을 구현할 수 있다고 설명합니다. 이 기능을 사용하면 Java로 작성된 픽셀 가져오기 기능과 같이 다른 언어로 전처리 기능을 작성하여 데이터를 더 잘 처리할 수 있으므로 기계 학습 모델용 이미지의 픽셀 데이터를 더 쉽게 얻을 수 있습니다.

  • 00:10:00 YouTube 동영상의 이 섹션에서 발표자는 초고해상도 모델을 사용하는 모바일 애플리케이션의 전처리 및 후처리 단계에 대해 설명합니다. RGB 값으로 작동하는 다른 모델과 달리 이 모델은 이미지의 휘도(Y) 구성 요소로만 작동합니다. 따라서 발표자는 RGB 이미지를 YCbCr 이미지로 변환하여 Y 성분을 추출하는 방법을 보여줍니다. 발표자는 또한 모바일 및 웹 애플리케이션에 최적화되고 축소된 크기의 빌드를 제공하는 ONNX Runtime 형식을 사용하여 모바일 환경에 모델을 로드하는 방법을 시연합니다. 마지막으로 모델의 출력을 처리하기 위해 후처리 단계가 수행됩니다.

  • 00:15:00 비디오의 이 섹션에서는 호스트와 게스트가 모델에서 배열을 가져와서 YCbCr을 다시 RGB로 변경하는 후처리 기능을 시연합니다. 그런 다음 기본 모델의 기능을 사용하여 표시할 이미지 소스를 가져옵니다. 비 Python 언어의 사전 처리 및 사후 처리는 다른 언어로 모델을 운용하고 추론할 때 어려운 부분이 되는 경향이 있습니다. 그들은 모델이 모바일 장치에 로컬로 배포되는 데모를 보여주고 나중에 코드를 재사용하여 웹 브라우저에서 동일한 모델을 배포합니다. 한 시청자는 게스트가 가능하다고 믿는 C#에서도 동일한 작업을 수행할 수 있는지 묻습니다.

  • 00:20:00 이 섹션에서 Kalia는 웹과 모바일 플랫폼에서 모델을 실행하기 위한 사전 및 사후 처리의 차이점을 보여줍니다. 웹에서는 이미지 데이터를 얻기 위해 오프스크린 캔버스와 캔버스 API를 사용하지만, 모바일에서는 API를 오갈 필요가 없습니다. 오프 스크린 캔버스가 이미지를 그리면 전처리 기능은 이미지 데이터를 초해상도 모델이 사용하는 y 채널로 조정합니다. 그런 다음 후처리 기능은 데이터를 y cbcr에서 rgb 형식으로 변환하여 화면에 표시할 수 있도록 합니다. 전처리 및 후처리 기능을 위한 Kalia의 코드는 Java, C# 또는 React에서 사용할 수 있습니다.

  • 00:25:00 비디오의 이 섹션에서 발표자는 ONNX Runtime과 같이 여러 장치에 단일 솔루션을 사용할 때의 이점에 대해 논의합니다. 웹 플랫폼에서 모바일 모델을 실행하는 방법과 비용 효율성 및 개인 정보 보호를 포함한 온디바이스 추론의 이점을 보여줍니다. 또한 발표자는 PyTorch 모델을 ONNX 모델로 변환한 다음 ONNX 런타임 형식으로 변환하는 과정을 설명합니다. 마지막으로 프로젝트의 개체 감지 측면을 소개하고 이미지에서 개체를 감지하기 위해 ONNX Runtime을 사용한 방법을 설명합니다.

  • 00:30:00 비디오의 이 섹션에서 발표자는 전체 감지의 정확도를 높이기 위해 초고해상도를 활용하는 물체 감지 AI 모델인 프로젝트에 사용된 모델의 세부 사항에 대해 논의합니다. 모델과 이전에 논의된 모델 간의 사전 처리 및 사후 처리의 차이점을 설명하고 위치, 클래스, 점수 및 감지 수를 포함하여 모델의 네 가지 출력을 자세히 설명합니다. 또한 Netron 도구를 활용하여 모델을 분석하고 분해하는 방법과 모델이 개체를 정확하게 감지할 수 있도록 RGB 값을 일관되게 유지하기 위해 전처리를 조정하는 방법을 보여줍니다.

  • 00:35:00 이 섹션에서 발표자는 사진 사전 초고해상도에서 모델을 실행하는 것을 시연하고 사진에서 개를 정확하게 식별하는 물체 감지 결과를 보여줍니다. 초고해상도 모델을 사용하면 이미지가 향상되어 더 정확하고 작은 감지 상자로 이어집니다. 이는 ONNX Runtime의 이식성과 실제 사용을 보여주고 장치의 최적화된 모델에서 모델을 실행하는 기능을 보여줍니다. 코드 및 오픈 소스 모델은 사용자가 자신의 솔루션에 액세스하고 사용자 정의할 수도 있습니다.

  • 00:40:00 이 섹션에서 보는 것은 C#에서 Onnx Runtime을 사용하는 BERT 자연어 처리 모델의 데모입니다. 호스트는 Python에서 BERT를 사용하는 예가 많지만 C#을 선호한다고 설명합니다. 질문 답변을 위해 Onnx Runtime 문서의 예제로 이동하기 전에 BERT 기본 무케이스 모델로 시작했습니다. Hugging Face 변환기 API를 사용하여 사전 훈련된 모델을 쉽게 가져와서 Onnx 형식으로 내보낼 수 있었습니다. 그런 다음 모델 입력을 제공하고 C#의 Onnx 런타임을 사용하여 실행하는 방법을 보여줍니다.

  • 00:45:00 이 섹션에서 발표자는 텍스트가 토큰화되는 모델의 사전 처리 단계에 대해 설명합니다. 다양한 입력 길이를 허용하기 위해 동적 축을 사용하는 방법과 토크나이저를 사용하여 C 샤프의 입력을 사전 처리하는 방법을 보여줍니다. 그들은 또한 Python 기반 변환기 패키지로는 불가능한 C 샤프의 BERT 모델을 토큰화할 수 있는 오픈 소스 프로젝트인 Boat Tokenizer를 소개합니다. 그런 다음 인코딩된 입력은 모델의 다른 단어에 연결된 다른 토큰인 입력 ID로 반환됩니다.

  • 00:50:00 이 섹션에서 발표자는 콘솔 앱을 만들어 C#에서 BERT 모델을 구현하는 방법에 대해 설명합니다. 그들은 모델의 다양한 C# 구현을 실험할 때 콘솔 앱을 사용하는 것이 도움이 되며 필요한 경우 프로덕션 애플리케이션에 통합할 수 있다고 설명합니다. 발표자는 토큰화를 사용하여 문장의 실제 토큰을 가져오는 방법과 토큰과 연결된 ID로 입력을 인코딩하는 방법을 보여줍니다. 또한 사용된 큰 어휘와 토큰화에 사용되는 개체로 변환되는 방법을 보여줍니다.

  • 00:55:00 이 섹션에서 발표자는 ONNX Runtime을 사용하여 데이터를 전처리하고 추론을 위해 준비하는 방법에 대해 논의합니다. 데이터를 추론 프로세스에 필요한 텐서로 변환하는 방법과 추론 세션에 전달할 명명된 ONNX 값 개체 목록을 만드는 방법을 보여줍니다. 또한 입력 데이터에 대해 올바른 레이블을 설정하는 것의 중요성에 대해서도 언급합니다. 전반적으로 ONNX Runtime으로 작업하고 기계 학습 추론을 위한 데이터를 준비하는 데 유용한 팁을 제공합니다.

  • 01:00:00 이 섹션에서 화자는 추론 값을 실행하고 시작 및 종료 로짓을 얻습니다. 결과는 레이블 인덱스 순서대로 반환됩니다. 예측된 답을 얻기 위해서는 시작 로짓과 끝 로짓에서 최대값과 최대값의 인덱스를 먼저 구해야 합니다. 출력 이름이 표시되고 토큰이 올바른지 비교하는 데 사용되는 인코딩된 토큰 값을 볼 수 있습니다. 연사는 또한 모델 운영을 위해 Python 추론 코드를 C#으로 변환하는 프로세스를 시연합니다. 마지막으로 그들은 더 많은 모델을 실험하고 Python 추론 코드를 C#으로 변환하고 모델을 미세 조정하도록 제안합니다.

  • 01:05:00 비디오의 이 섹션에서 진행자는 ONNX 런타임과 ONNX 사용 방법의 예를 찾는 데 좋은 리소스인 ONNX 추론 예제의 예제를 사용하여 텍스트 분류를 탐색합니다. 이 예제에서는 Hugging Face의 토크나이저와 더 작은 증류 버전의 기본 포함된 토크나이저를 사용합니다. 호스트는 모델 이름을 기반으로 경로를 설정한 다음 가변 문장 길이로 인해 동적 축을 갖는 모델에 대한 입력을 설정합니다. 텍스트 분류 모델의 입력은 입력 ID와 어텐션 마스크입니다. 호스트는 ONNX용으로 개발 중인 확장이 있으며 새 버전의 런타임이 .NET 6 및 Maui를 지원한다고 언급합니다. 모델에 대한 사전 처리 예제는 쉽게 사용할 수 없지만 주최자는 Netron을 사용하여 이를 파악할 계획입니다.

  • 01:10:00 이 섹션을 요약합니다. 비디오의 이 섹션에서 화자는 덜 유익한 방식으로 이전 모델의 이름을 바꾸고 여기에 텍스트 분류를 추가합니다. 계속해서 C# 및 .NET 6을 사용하여 새 프로젝트를 만들고 간단한 스크립트 콘솔 템플릿을 사용하는 새로운 기능에 대해 설명합니다. 스피커는 이전 프로젝트의 일부 코드를 복사하여 새 프로젝트에 붙여넣고 이제 두 개의 출력만 있는 BERT 입력을 추가합니다. 화자는 이 입력에 대해 별도의 파일을 만들어야 함을 인정하지만 대신 스크립트를 선택합니다.

  • 01:15:00 이 섹션에서 발표자는 C#에서 Burp 분류 모델을 빌드하기 위한 다양한 패키지 및 도구 설치에 대해 논의합니다. 관리 패키지와 함께 필수 토크나이저 패키지 및 ONNX 런타임 패키지를 설치합니다. 불필요한 속성 패키지는 주석 처리되고 화자는 인코딩을 위한 토큰을 얻기 위해 입력 문장과 토크나이저를 추가합니다. 발표자는 GPT-2 모델을 사용하여 코드 베이스에서 학습하고 로컬에서 실행되는 VS 2022 IntelliCode도 언급합니다.

  • 01:20:00 비디오의 이 섹션에서 발표자는 기존 코드베이스에서 학습할 수 있는 AI 기반 도구인 VS 2022와 함께 Intellicode(이전에는 Intellisense라고 함)를 사용하는 방법에 대해 이야기합니다. 그런 다음 문장의 인코딩된 값과 토크나이저 작업으로 이동합니다. 또한 모델 경로와 모델을 실험 목적으로 콘솔 앱에 붙여넣는 방법에 대해서도 설명합니다. 단, 프로덕션 애플리케이션에서 이를 처리하는 더 좋은 방법이 있습니다. 마지막으로 발표자는 BERT 모델에 대한 추론 세션을 생성합니다.

  • 01:25:00 비디오의 이 섹션에서 발표자는 ONNX 런타임을 사용하여 추론 실행을 준비하는 데 필요한 단계를 진행합니다. 그들은 텐서를 생성하고 이를 텐서로 변환하는 것으로 시작합니다. 그런 다음 입력 ID와 주의 마스크 및 목록 목록을 사용하여 입력을 만듭니다. 명명된 ONNX 값을 생성한 후 모델을 실행하고 다양한 그래프 최적화 및 실행 공급자를 포함하여 ONNX Runtime 추론 세션을 구성하기 위한 옵션에 대해 논의합니다. 마지막으로 출력을 검색합니다. 이 경우에는 값이 하나만 있습니다.

  • 01:30:00 대본의 이 섹션에서 발표자는 ONNX Runtime에서 모델을 사용하기 위한 코드를 살펴봅니다. ONNX 모델을 사용하기 위해 라벨 이름을 동일하게 지정하는 방법과 온전성 테스트를 실행하여 모든 것이 작동하는지 확인하는 방법을 설명하고 있습니다. 코드를 단계별로 실행하기 위해 중단점을 설정하고 입력, 어텐션 마스크 및 ID가 올바른지 확인합니다. 입력이 정확하면 모델을 로드하고 텐서, 세션 및 추론을 생성합니다. 그런 다음 이를 결과로 되돌리는 방법을 파악하기 위해 사후 처리가 필요하다고 설명하고 일부 사전 처리 코드를 찾았습니다.

  • 01:35:00 비디오의 이 섹션에서 발표자는 분류 모델에서 얻은 두 값을 처리하여 주어진 문장의 긍정적 감정과 부정적 감정을 결정하는 과정에 대해 논의합니다. 문장을 토큰화하고 토큰을 얻기 위해 토크나이저를 사용하는 방법을 보여줍니다. 토큰을 사용하여 C#에서 프로세스를 수행하는 방법에 대한 이해를 확인합니다. 그들은 또한 정확한 토큰화를 보장하기 위해 컨설팅 모델 문서의 중요성과 올바른 토크나이저 선택의 중요성을 언급합니다.

  • 01:40:00 이 섹션에서는 AI Show Live의 진행자가 Hugging Face의 Optimum 프로젝트에 대해 논의합니다. 이 프로젝트는 백엔드에서 ONNX 런타임을 사용하여 훈련 및 다양한 하드웨어 통합을 위한 가속기를 포함하여 기계 학습을 위한 최적화를 구현합니다. 또한 호스트는 토크나이저에 대한 사전 처리 단계와 텍스트 분류 모델에 대한 세션 생성을 검토합니다. 그들은 문장의 인코딩된 버전을 탐색하고 이전에 작성된 일부 코드를 재사용하여 모델에 대한 세션을 생성합니다.

  • 01:45:00 이 섹션에서는 발표자가 모델을 내보내고 입력 데이터를 처리하여 모델 추론을 준비합니다. 그들은 인코딩된 토큰의 온전성 검사를 수행하여 입력 데이터를 토큰화하는 데 올바른 토크나이저가 사용되었는지 확인합니다. 그러나 그들은 입력 마스크가 누락되었음을 발견하고 문제를 정확히 지적하기 위해 모델과 코드를 검사하기 위해 되돌아갑니다. 사용된 토크나이저 주변의 불확실성에도 불구하고 인코딩된 토큰이 올바른지 확인하고 입력 마스크 생성을 진행합니다.

  • 01:55:00 비디오의 이 섹션에서 발표자는 모델 실행을 위한 입력 및 출력을 설정하려고 합니다. 그들은 입력 마스크와 어텐션 마스크에서 몇 가지 문제에 직면하고 궁극적으로 추가 처리 없이 토큰을 잡고 보낼 수 있다는 것을 깨닫습니다. 그런 다음 초점을 모델 입력으로 전환합니다. 모델 입력에는 두 개의 입력이 필요하고 배치의 모양을 지정해야 하므로 조금 더 복잡합니다. 발표자는 ONNX 런타임을 사용하여 입력 및 출력을 설정하고 테스트하여 C# 모델과 동일한 결과를 생성하는지 확인합니다.
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
AI Show Live - Episode 62 - Multiplatform Inference with the ONNX Runtime
  • 2022.07.29
  • www.youtube.com
Join Cassie Breviu as she takes us on a tour of what the ONNX Runtime can do when it comes to inference AND on multiple platforms to boot.
 

ONNX Runtime을 사용한 응용 머신 러닝



ONNX Runtime을 사용한 응용 머신 러닝

Microsoft의 수석 교육 클라우드 지지자인 Jennifer Looper는 이 비디오에서 앱 구축, 기계 학습 및 데이터 과학의 융합에 대해 설명합니다. 그녀는 웹용 스마트 앱 구축을 권장하고, 머신 러닝 기술을 앱에 통합하기 위해 ml5.js, Magenta.js, PoseNet 및 Brain.js를 포함한 다양한 JavaScript API를 탐색합니다. Looper는 고전적인 기계 학습을 위한 scikit-learn의 유용성을 강조하고 신경망의 무거운 솔루션이 없는 강력한 도구로 추천합니다. 그녀는 또한 머신 러닝 및 딥 러닝 모델 구축을 위한 공통 연산자 집합을 정의하여 교육 및 추론을 최적화하는 Onnx Runtime에 대해 설명하고 지도 머신 러닝을 사용하여 기본 분류 작업을 수행하는 프로세스를 설명하기 위해 Kaggle에서 데이터를 소싱합니다. 그런 다음 연사는 머신 러닝 모델을 사용하여 추천 엔진을 구축하는 방법을 시연하고 머신 러닝에 대해 자세히 알아볼 수 있는 Microsoft 온라인 리소스를 방문할 것을 제안합니다. 그녀는 Onnx Runtime이 커리큘럼의 일부인 초보자나 머신 러닝에 대해 더 배우고자 하는 모든 사람에게 적합하다고 결론을 내립니다.

  • 00:00:00 이 섹션에서는 Microsoft의 수석 교육 클라우드 지지자인 Jen Looper가 앱 구축과 기계 학습 및 데이터 과학 간의 융합에 대해 설명합니다. 그녀는 특히 지능이 주입되고 백그라운드에서 기계 학습 알고리즘을 실행하는 새로운 앱에 직면하여 오늘날 모바일 앱을 만드는 데 따르는 어려움을 설명합니다. Looper는 지능형 경험에 대한 이러한 새로운 수요가 먼저 인디 앱 개발자가 직면한 문제에 기여했다고 주장합니다.

  • 00:05:00 이 섹션에서 발표자는 스마트 앱을 구축하는 방법과 이 프로세스를 안내하는 아키텍처 결정 및 기술 스택에 대해 논의합니다. 옵션에는 기본 앱 빌드, 웹용 빌드 또는 데스크탑용 빌드가 포함됩니다. 발표자는 스마트 앱을 구축하기 위해 웹을 고수할 것을 권장하고 웹 개발자와 기계 학습 엔지니어 간의 기술 집합의 차이에도 불구하고 이러한 분야가 수렴할 수 있는 방법이 있다고 설명합니다. 발표자는 DevOps, 데이터 소싱 및 청소, 교육 및 반복 사용과 머신 러닝 모델의 정확한 제공 및 지속적인 개선을 보장하는 ML Ops 팀을 언급하면서 개발자와 머신 러닝 엔지니어 간의 협업을 설명합니다.

  • 00:10:00 개인적인 일화에서 발표자는 기계 학습 엔지니어링과 웹 앱 생성에서 다리를 연결하는 것이 다리에 대한 두려움을 극복하는 것보다 덜 어려울 수 있는 방법을 설명합니다. 연사는 TensorFlow.js, Brain.js 및 ONNX를 포함하여 기계 학습 기술을 웹 앱에 통합하기 위한 다양한 도구를 소개합니다. 그녀는 각 도구의 이점을 강조하고 시청자가 TensorFlow 웹사이트를 탐색하여 그들이 제공하는 멋진 데모를 발견하도록 권장합니다. 그녀는 또한 ONNX Runtime과 ONNX 기반 모델을 웹 앱으로 가져오는 기능에 중점을 둡니다. 전반적으로 연사는 앱 개발자에게 기계 학습 기술로 앱을 향상시키는 데 사용할 수 있는 도구에 대한 지식을 제공하는 것을 목표로 합니다.

  • 00:15:00 동영상의 이 섹션에서 발표자는 브라우저에서 인공 지능을 탐색하고 생성하기 위해 사전 훈련된 모델과 함께 사용할 수 있는 다양한 Javascript API에 대해 설명합니다. 그 중 하나는 Tensorflow 위에 구축되고 이미지 인식 및 사운드 분석에 대한 예제를 제공하는 ml5.js입니다. 언급된 또 다른 API는 미리 훈련된 모델을 사용하여 브라우저에서 음악과 예술을 만드는 Magenta.js입니다. 연사는 전신, 얼굴 또는 손에 대한 단일 또는 다중 포즈를 추정하는 데 사용할 수 있는 PoseNet에 대해서도 이야기합니다. 마지막으로 발표자는 신경망이 브라우저와 Node.js에서 Javascript로 실행될 수 있도록 하는 Brain.js를 소개합니다.

  • 00:20:00 이 섹션에서 연사는 기계 학습 모델 교육을 위해 JavaScript 및 브라우저를 사용하는 것의 한계에 대해 논의하며, 이러한 목적에 적합한 환경이 아니며 기성 모델을 실행하거나 기존 재교육. 그들은 보다 강력하고 적절한 기계 학습 모델을 위해 Python이 갈 길이며 프로그래머는 위험할 만큼 충분히 Python을 배우고 모델 교육을 위해 Jupyter 노트북으로 작업할 수 있다고 권장합니다. 또한 이미지 및 기타 미디어 교육을 위해 loeb.ai와 같은 서비스를 사용하는 방법에 대해서도 논의합니다.

  • 00:25:00 이 섹션에서 연사는 기계 학습에 TensorFlow를 사용하는 대안인 scikit-learn에 대해 논의합니다. 발표자는 모든 기계 학습 문제에 신경망이 필요한 것은 아니며 신경망을 사용하지 않는 GitHub의 커리큘럼을 만들었다고 설명합니다. 또한 scikit-learn을 사용하여 ONNX 런타임으로 구동되는 요리 추천 애플리케이션을 생성하여 사용자가 재료를 입력하고 해당 재료로 만들 수 있는 요리 유형에 대한 제안을 받는 방법을 보여줍니다. 화자는 고전적인 기계 학습을 위한 scikit-learn의 유용성을 강조하고 신경망의 무거운 솔루션이 없는 강력한 도구로 추천합니다.

  • 00:30:00 비디오의 이 섹션에서 연사는 분류, 회귀 및 클러스터링과 같은 기본 기계 학습 작업에 대한 예제 및 문서를 제공하는 오픈 소스 기계 학습 프레임워크인 scikit-learn을 소개합니다. 그들은 scikit-learn이 데이터 과학자들 사이에서 인기 있는 프레임워크이며 numpy, scipy 및 matplotlib와 함께 번들로 제공되므로 모든 사람이 액세스할 수 있다고 설명합니다. 그런 다음 발표자는 머신 러닝 및 딥 러닝 모델 구축을 위한 공통 연산자 집합을 정의하여 교육 및 추론을 최적화하는 Open Neural Network Exchange(Onnx)의 제품인 Onnx Runtime에 대해 설명합니다. Onnx Runtime은 다양한 프레임워크, 도구 및 런타임을 지원하며 AI 개발자가 선택한 추론 엔진과 함께 선호하는 프레임워크를 사용할 수 있도록 합니다. 발표자는 Python을 사용하여 데이터 정리, scikit-learn을 사용하여 모델 교육, skl을 Onnx 라이브러리로 사용하여 Onnx Runtime과 함께 사용할 모델 변환을 포함하는 일반적인 기계 학습 워크플로를 설명합니다.

  • 00:35:00 비디오의 이 섹션에서 발표자는 다양한 유형의 요리에 대한 Kaggle의 데이터를 소싱하고 데이터를 정리하고 균형을 맞추는 방법을 설명합니다. 데이터 세트에는 인도, 태국, 한국, 일본 또는 중국으로 분류되는 100개의 잠재적 성분이 포함되어 있습니다. 모델을 구축하기 위해 발표자는 결과를 최적화하기 위해 알고리즘, 분류기 및 솔버를 선택해야 한다고 설명합니다. 데이터 세트는 작으며 약 700개의 데이터 포인트만 있습니다. 데이터에는 지도 학습을 사용할 수 있음을 의미하는 레이블이 지정되며 연사는 기계 학습 응용 프로그램에서 사용하기 위해 데이터를 형성하고 정리하기 전에 데이터를 이해하는 것의 중요성을 강조합니다.

  • 00:40:00 이 섹션에서 발표자는 지도 머신 러닝을 사용하여 기본 분류 작업을 수행하고 다중 클래스 분류 알고리즘을 선택하는 프로세스에 대해 설명합니다. 발표자는 다중 클래스 분류를 위한 치트 시트를 제시하고 데이터 세트 및 로컬 교육의 특성으로 인해 신경망을 배제합니다. 남아 있는 두 가지 다중 클래스 분류 알고리즘은 로지스틱 회귀 및 결정 포리스트입니다. 발표자는 로지스틱 회귀를 선택하고 다중 클래스 분류를 처리하기 위해 하나와 나머지를 선택합니다. 그런 다음 발표자는 올바른 솔버 선택의 중요성을 설명하고 liblinear 솔버를 선택합니다. 발표자는 lr fit을 사용하여 모델을 훈련하고 고수, 양파, 완두콩, 감자, 토마토 및 식물성 기름이 포함된 레시피를 사용하여 정확도를 테스트하여 71% 정확도를 보고합니다. 발표자는 또한 사용 가능한 데이터 및 레이블의 양을 기반으로 적절한 알고리즘을 선택하는 데 도움이 되는 Scikit-learn 알고리즘 치트 시트를 제공합니다.

  • 00:45:00 이 섹션에서 연사는 기계 학습 모델을 구축할 때 올바른 분류 알고리즘을 선택하는 것의 중요성에 대해 논의합니다. 그들은 어떤 것이 최고의 정확도를 제공하는지 확인하기 위해 다양한 분류기와 솔버로 실험한 방법을 보여줍니다. SVC(Support Vector Classifier)를 선택한 후 모델을 다시 빌드하고 정확도를 테스트했습니다. 모델의 정확성에 만족한 후에는 모델을 Onyx 파일로 변환하고 Onyx 런타임을 사용하여 웹 애플리케이션을 구축했습니다. 발표자는 가져온 모델에 성분 데이터를 공급하기 위해 일련의 체크박스가 있는 간단한 웹 애플리케이션을 만들고 비동기 기능을 사용하여 추론을 시작하는 방법을 설명합니다. 그런 다음 웹 앱을 시연하고 모델이 제안한 내용을 확인했습니다.

  • 00:50:00 동영상의 이 섹션에서는 기계 학습 모델을 사용하여 추천 엔진을 구축하는 방법을 보여줍니다. 재료 목록을 입력하면 모델은 어떤 종류의 요리를 만들 수 있는지 제안합니다. 또한 연사는 클러스터링, 회귀, 분류, 강화 학습, 자연어 처리 및 시계열 애플리케이션을 포함한 다양한 주제에 대한 무료 콘텐츠를 제공하는 Microsoft의 온라인 리소스를 통해 머신 러닝에 대해 자세히 알아보도록 시청자를 초대합니다. 발표자는 시청자가 질문을 하고 mycommworld.com 웹사이트의 콘텐츠에 참여하도록 권장합니다.

  • 00:55:00 이 섹션에서는 Onnx Runtime이 초보자에게 적합한 도구인지 묻습니다. 답변은 '예'입니다. 연사 중 한 명은 독학으로 웹 개발자로서 열심히 노력하면 누구나 무엇이든 배울 수 있다고 믿습니다. 따라서 Onnx Runtime은 커리큘럼의 일부인 초보자 또는 머신 러닝에 대해 더 배우고자 하는 모든 사람에게 적합합니다.
Applied Machine Learning with Onnx Runtime
Applied Machine Learning with Onnx Runtime
  • 2021.12.02
  • www.youtube.com
This conference talk was delivered via the One Million Arab Coders initiative. It gives an overview of what applied ML is, how we need to bridge the divide b...
 

이전에는 없었던 ONNX의 기능을 Spark로 가져옵니다.



이전에는 없었던 ONNX의 기능을 Spark로 가져옵니다.

이 비디오에서 Huawei의 Shivan Wang은 추론을 위해 ONNX의 기능을 Spark에 제공하는 방법을 설명합니다. 그는 Spark에 DL 모델을 배포하는 데 따르는 어려움과 Spark 커뮤니티가 프로세스를 단순화하기 위해 어떻게 Spip이라는 제안을 시작했는지에 대해 설명합니다. 연사는 또한 Huawei의 AI 프로세서, Ascent 및 여러 Ascent 프로세서 모델과 Atlas 하드웨어를 포함하는 Ascent AI 에코시스템에 대해 논의합니다. 그는 모델 변환 없이 Ascent 하드웨어에서 직접 ONNX 모델을 사용하기 위해 다음 런타임에 Con을 새로운 실행 공급자로 추가할 것을 제안합니다. 마지막으로 그는 ONNX의 기능을 Spark에 제공하기 위한 POC 코드가 거의 완성되었으며 관심 있는 사용자가 토론 메시지를 남기고 잠재적으로 테스트 목적으로 리소스를 제공할 수 있음을 환영합니다.

  • 00:00:00 이 섹션에서는 Huawei의 Shivan Wang이 추론을 위해 Onyx의 성능을 Spark로 가져오는 방법에 대해 설명합니다. 그는 잘 정의된 데이터 프레임 추론 인터페이스가 데이터를 쉽게 로드하고 기능 엔지니어링을 완료할 수 있는 데이터 엔지니어에게 매우 친숙하다고 설명합니다. 그러나 AI 프레임워크와 내부 사전 샘플 사이에는 격차가 있어 Spark에 DL 모델을 배포하기가 어렵습니다. 프로세스를 단순화하기 위해 Spark 커뮤니티는 Spip이라는 제안에 대한 토론을 시작했습니다. 이 제안은 Spark 및 AI 프로세스가 소형 셀에 영향을 미치도록 하는 간단한 API를 제공합니다. 마지막으로 Spark 실행기에서 Onyx 추론을 실행함으로써 사용자는 Onyx 추론 플랫폼의 도움으로 빅 데이터에 대한 Onyx 영향을 쉽게 완료할 수 있습니다.

  • 00:05:00 이 섹션에서 발표자는 Ascent라는 Huawei의 AI 프로세서와 여러 Ascent 프로세서 모델 및 Atlas 하드웨어를 포함하는 Ascent AI 에코시스템에 대해 논의합니다. Ascent 생태계의 소프트웨어 계층은 Cam이라고 하며 개발자가 Ascent 플랫폼 기반 서비스에서 AI 애플리케이션을 빠르게 구축할 수 있도록 API를 제공합니다. 다른 하드웨어에서 ONNX 모델을 실행하려면 사용자는 먼저 Con에서 제공하는 모델 변환 도구를 사용하여 모델을 ONNX에서 Ascent로 변환해야 합니다. 그러나 발표자는 사용자가 모델 변환 없이 Ascent 하드웨어에서 직접 ONNX 모델을 사용할 수 있도록 다음 런타임에 Con을 새로운 실행 공급자로 추가하는 것이 더 나은 솔루션이라고 제안합니다. 그들은 올해 말까지 모든 ONNX 운영자 지원을 완료하고 ONNX 모델 Zoo의 모든 모델이 Ascent에서 잘 작동하도록 보장하고 내년에 추가 개발을 진행할 계획입니다.

  • 00:10:00 이 섹션에서 발표자는 ONNX의 기능을 Spark에 제공하기 위한 POC 코드가 거의 완성되었으며 추가 작업과 같은 기본 작업이 올바르게 실행될 수 있다고 언급합니다. 또한 관심 있는 사용자를 초대하여 토론할 메시지를 남기고 잠재적으로 테스트 목적으로 리소스를 제공합니다. 시청해 주신 시청자에게 감사 인사를 전하며 섹션을 마무리합니다.
Bring the power of ONNX to Spark as it never happened before
Bring the power of ONNX to Spark as it never happened before
  • 2022.07.13
  • www.youtube.com
Both data processing platforms and deep learning frameworks are evolving in their own fields. Usually, Spark is used for offline data processing, and then va...
사유: