스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Metal 3 소개
Metal 3를 통해 앱에서 Apple 실리콘의 잠재력을 최대한 활용하세요. 최신 기능, 향상된 기능 및 툴링을 소개합니다. 또한 고급 기능과 컴파일러 도구를 사용하여 리소스를 더 빨리 로드하고, 빌드 시점에 셰이더 바이너리를 컴파일하며, 메시 셰이더를 사용하여 복잡한 지오메트리를 처리하고, 고해상도 그래픽을 더 짧은 시간에 렌더링하며, 머신 러닝 네트워크를 더 빠르게 학습시키는 방법 등을 알아보겠습니다.
리소스
관련 비디오
WWDC22
-
다운로드
♪ ♪
안녕하세요 Metal 3에 오신 걸 환영합니다 제 이름은 Tarun Belagodu두이며 Metal의 최신 개선 사항을 공유하도록 하죠 먼저 기초부터 시작합시다 Metal은 오버헤드가 낮은 Apple의 그래픽과 컴퓨팅 API죠 가장 빠르고 효율적인 방식으로 Apple 제품 속 강력한 GPU를 구동합니다 GPU로 전송하는 명령에 대한 멀티스레드 및 직접 제어를 제공하며 풍성한 셰이딩 언어로 셰이더 컴파일링을 지원하며 깊게 통합된 도구로 복잡한 앱과 게임의 디버그와 프로파일링을 돕죠
도입 이후 Metal을 통해 고급 그래픽과 컴퓨팅 기능을 추가했고 GPU 중심의 렌더링과 머신 러닝 레이 트레이싱에 집중했습니다 Apple Silicon은 새로운 Mac에 엄청난 그래픽 성능과 효율성을 높일 방법을 제시했으며 Metal이 이러한 성능을 최대한 발휘하게 해 주죠 올해 Metal은 한 단계 더 높이 Metal 3로 도약합니다
Metal 3에는 새로운 기능과 더 강력한 성능 렌더링 품질로 여러분의 앱과 게임을 더 빨리 실행하고 멋져 보이도록 만들죠 빠른 리소스 로딩부터 시작합시다 현대의 게임과 앱은 애셋 로딩 요구조건이 높고 다수의 작은 애셋 요청을 파일에서 Metal 자원으로 스트리밍하는 것이 고품질 비주얼의 핵심이죠 하지만 기존 저장 API는 대규모 요청에 맞게 설계됐습니다
Metal 3의 빠른 리소스 로딩은 다수의 작은 로드를 요청하게 하며 그래픽과 컴퓨팅과 같은 멀티스레드 명령 모형을 사용하죠 각 요청은 명령이며 대부분 대기열에 올라 비동기 제출될 수 있습니다 Metal 버퍼와 텍스처에 특별한 단계 없이 직접 로딩하여 개발 노력과 전환 시간을 줄여 주죠 빠른 리소스 로딩은 GPU 작업과 로딩 작업을 여러분이 알고 있는 Metal 동기화 프리미티브로 쉽게 조정할 수 있게 해 줍니다 텍스처 스트리밍 시스템은 빠른 리소스 로딩으로 득을 보죠 예시를 살펴봅시다
Metal 스파스 텍스처는 프로그램이 타일 단위로 스트리밍하게 하죠 Metal 스파스 텍스처로 만든 텍스처 스트리밍 체계는 4단계로 이루어집니다 먼저, 이전 프레임의 피드백으로 뭘 로딩할지 결정하고 둘째, 파일 저장소에서 타일을 로딩하며 셋째, 대기 공간에서 스파스 텍스처를 복사하고 마지막으로 프레임을 그리죠
로딩과 복사 시간이 오래 걸릴수록 앱이 더 낮은 품질로 이미지를 렌더링합니다
빠른 리소스 로딩은 로딩 오버헤드를 최소화하고 저장 하드웨어의 대기열에 요청이 충분한지 확인하여 처리량을 최대화하죠 이를 통해 빠르고 안정적인 성능을 제공하여 고품질 렌더링에 더 많은 시간을 씁니다
빠른 리소스 로딩은 작성해야 하는 코드도 간소화하여 고품질 애셋 스트리밍을 가능하게 하죠 빠른 리소스 로딩에 관해 더 알고 싶다면 'Metal 3로 리소스를 빠르게 로딩하기' 세션을 확인하세요 다음은 새로운 오프라인 컴파일 작업 흐름으로 앱의 로딩 시간과 끊김 현상을 줄여 주는 것을 설명하죠 셰이더 바이너리는 GPU에 특정한 머신 코드로 Metal 파이프라인 생성 절차의 일부로 앱이 실행되는 동안 생성되는 것입니다 이러한 바이너리를 생성하는 건 공수가 많이 드는 작업으로 앱 실행의 로딩 화면 뒤에 숨기는 경우가 많죠 하지만 프레임 중에 이런 작업을 처리해야 하면 프레임 레이트 끊김을 유발합니다 이런 바이너리는 Metal에 의해 캐시 되어 그런 대가를 치르지 않아도 되지만 앱이 처음 실행되어 바이너리가 처음 필요할 때는 그러한 현상이 드러나죠 오프라인 컴파일을 통해 런타임 중 셰이더 바이너리 생성을 막을 수 있습니다
바이너리 생성을 프로젝트 빌드 타임으로 옮겨 로딩 때 Metal 파이프라인을 생성하는 시간을 확 줄이고 파이프라인을 제시간에 생성하여 앱의 끊김 현상을 줄입니다 끊김 현상을 줄인다는 게 어떤 의미인지 살펴보죠
이 예시는 인코딩 중에 Metal 파이프라인 정적 객체를 생성해야 하는 게임입니다 Metal이 본 적 없는 파이프라인이므로 필요한 셰이더 바이너리를 생성해야 하죠 이는 나머지 프레임 인코딩을 방해하는 긴 작업으로 앱이 프레임 레이트 기준에 못 미치게 합니다 이는 한 번만 발생하지만 사용자는 프레임 끊김을 인지할 수 있죠 반면, 오프라인 컴파일은 셰이더 바이너리를 빌드 때 생성하여 모든 파이프라인 상태 생성이 빠르고 실행은 부드럽습니다 오프라인 컴파일은 앱 로딩 시간에도 큰 영향을 주죠 예를 살펴봅시다
앱 대부분은 Metal 파이프라인 정적 객체를 로딩 단계에서 생성하죠 셰이더 바이너리는 첫 번째 로딩 때 생성합니다 이런 파이프라인을 많이 생성하면 사용자가 오래 기다려야 하죠 오프라인 컴파일은 셰이더 바이너리 생성을 프로젝트 빌드 시간으로 옮겨 로딩 시간을 줄이고 사용자가 빠르게 앱을 사용하게 해 줍니다 오프라인 컴파일은 복잡한 파이프라인이 많은 앱에 유용하죠 오프라인 컴파일과 다른 개선 사항을 더 알고 싶다면 'Metal 3로 GPU 바이너리 타겟과 최적화하기'를 시청하십시오
이제 MetalFX로 넘어가죠 Metal 프로그램을 위해 플랫폼에 최적화된 그래픽 효과를 제공합니다 MetalFX 업스케일링은 짧은 시간에 고품질 그래픽을 렌더링하는데 고성능 업스케일링과 안티에일리어싱 기술을 이용하죠 시간과 공간 알고리즘의 조합을 선택하여 성능을 높일 수 있습니다 이게 왜 중요한지 보여드리죠 Retina 해상도는 여러분의 앱과 게임이 원하는 또렷한 디테일을 제공하지만 모든 픽셀을 생성하려면 성능에 영향을 줍니다 MetalFX 업스케일링을 통해 더 낮은 해상도로 픽셀을 생성하고 프레임워크가 고품질의 고해상도 이미지를 낮은 비용과 높은 프레임 레이트로 생성하게 해 주죠 MetalFX는 강력한 프레임워크로 고성능, 고품질 업스케일링을 현실로 만들어 줍니다 MetalFX 업스케일링이 궁금하시면 'MetalFX 업스케일링으로 성능 높이기' 세션을 확인하십시오 다음은 Metal의 유연한 지오메트리 파이프라인인 메시 셰이더입니다 프로그래밍이 가능한 그래픽 파이프라인은 셰이더에서 정점을 변환하고 프리미티브로 조립한 뒤 기능이 고정된 하드웨어로 라스터화했습니다 대부분 프로그램은 이거로 충분하지만 컬링 같은 사례는 전체 프리미티브 접근이 필요하죠 각 정점은 판독하고 변환한 뒤 독립적으로 출력합니다 따라서 렌더링 중에 정점이나 프리미티브를 추가할 수 없죠 상급 지오메트리 처리는 더 많은 유연성을 요구합니다 옛날 방식은 컴퓨팅 단계에서 지오메트리를 미리 처리해야 했지만 중간 지오메트리의 변수 수량을 메모리에 저장하는 걸 미리 계산하는 게 어려울 수도 있죠 Metal 메시 셰이더는 다른 처리 방식을 도입합니다
전통적인 정점 단계를 유연한 2단계 모델로 대체하고 지오메트리의 계층적 처리를 가능하게 하죠 1단계에서 전체 오브젝트를 분석한 뒤 2단계에서 확장, 수축, 정제를 결정합니다 렌더링 단계에서 컴퓨팅 능력을 제공하여 중간 기기 메모리 저장을 필요로 하지 않죠 메시 셰이더는 GPU 중심의 컬링과 LOD 선택 순차적 지오메트리 생성 작업에 적합합니다 더 자세히 살펴보죠 이 예를 보면 컴퓨팅 단계에서 표면을 평가하고 지오메트리를 생성합니다 지오메트리와 그리기 명령은 기기 메모리에 쓰여 이후 렌더링 단계에 활용되죠 높은 확장 요소와 간접적인 그리기 호출로 필요한 메모리의 양을 예측하기 힘들 수 있습니다
메시 셰이더는 컴퓨팅과 비슷한 2개 단계를 실행해 렌더링 파이프라인의 효율을 높이죠
오브젝트 단계는 입력 값을 평가해 생성해야 하는 메시의 수를 결정합니다
메시 단계에서는 실제 지오메트리를 생성하죠 이 메시는 레스터라이저에 직접 보내져서 기기 메모리로의 왕복 이동과 정점 처리 작업을 우회합니다
메시 셰이더는 효율적인 순차적 지오메트리와 컬링, 시스템 LOD 작업을 수행하죠 메시 셰이더에 관해 더 알고 싶으시면 'Metal 메시 셰이더로 지오메트리 변환하기' 세션을 확인하세요
Metal 3는 레이 트레이싱 파이프라인 속도를 높여 주죠 가속 구조 빌드의 모든 것과 인터섹션, 셰이딩이 최적화되었습니다 Metal은 GPU 중심의 레이 트레이싱 파이프라인도 지원하여 앱을 더 최적화할 수 있죠 Metal 3의 레이 트레이싱과 이전 기능을 비교해 봅시다
Metal 3 레이 트레이싱은 CPU, GPU 시간을 많이 절약하죠 먼저 가속 구조를 더 빠른 시간에 만들어 GPU가 레이를 그리고 트레이싱할 시간을 더 줍니다 둘째, 컬링과 같은 CPU 작업을 GPU로 옮길 수 있는데 레이 트레이싱을 위한 간접 명령 버퍼 지원 덕분이죠 또한, Metal 3 레이 트레이싱은 프리미티브 데이터에 직접 접근해 인터섹션과 셰이딩을 간소화하고 최적화합니다 Metal 3 레이 트레이싱은 이전보다 나아지고 강력해졌죠 레이 트레이싱에 관해 더 알고 싶으시면 'Metal 레이 트레이싱 성능 최대화' 세션을 확인하십시오 이제 Metal 3가 머신 러닝 추론과 훈련을 가속하는 법을 보여드리죠 Metal 3는 머신 러닝을 가속하는 중대한 개선 사항이 있으며 Mac의 네트워크 훈련 가속에 관한 지원도 포함합니다 그래픽과 미디어 처리 프로그램의 머신 러닝 추론 최적화에 대한 상당한 수준의 최적화 작업도 포함하죠 TensorFlow는 머신 러닝을 위한 유명한 프레임워크로 Mac에서 GPU 가속됩니다 최근에 출시된 Mac Studio는 M1 Ultra에서 CPU 훈련과 비교했을 때 16배의 가속을 다양한 네트워크에서 제공하죠 Metal 3는 새로운 TensorFlow 작업도 가속합니다 이를 통해 CPU와의 동기화를 줄여서 더 큰 규모의 성능을 발휘할 수 있죠 PyTorch도 네트워크 훈련에서 유명한 머신 러닝 프레임워크로 Metal을 이용하여 GPU 가속을 얻었습니다 또한 M1 Ultra가 장착된 Mac Studio로 CPU를 사용한 것과 비교해서 훈련 가속이 상당히 빨라지죠 예를 들어 BERT 모형을 6.5배 빠르게 훈련할 수 있고 ResNet50은 8.5배 빠르게 훈련할 수 있습니다 Metal은 Apple Silicon으로 머신 러닝 추론을 최적화하여 성능을 최대로 높입니다 이는 Metal을 기반으로 한 영상 및 이미지 처리 프로그램에 특히 유용하며 블랙매직 디자인의 '다빈치 리졸브'가 그 예죠 영상 제작 플랫폼 다빈치 리졸브는 컬러 그레이딩에 초점을 맞춰 작업 흐름에서 Metal과 머신 러닝을 많이 사용합니다 결과는 정말 놀랍죠 Metal의 머신 러닝 가속 지원으로 블랙매직 디자인은 편집 및 컬러 그레이딩 작업 흐름과 머신 러닝 기반의 도구에서 엄청난 성능 향상을 이뤘습니다 머신 러닝에 관한 업데이트 사항이 궁금하시면 'Metal로 머신 러닝 가속하기'를 시청하세요 이제 제가 설명해 드린 Metal 3 기능을 지원하는 하드웨어를 소개하죠 Metal 3는 현대 iOS와 iPadOS, macOS 기기를 지원하며 A13 Bionic과 M1 이후 칩을 장착한 iPhone과 iPad도 포함하며 모든 Apple Silicon Mac 체계와 최신 AMD 및 Intel GPU를 장착한 Mac 체계를 지원하죠
특정 기기가 Metal 3를 지원하는지 알아보려면 Metal 기기에 supportsFamily 쿼리를 사용하십시오
Metal 3는 기능으로만 이루어진 것이 아닙니다 포괄적인 상급 개발자 도구를 포함하죠 그중 몇 개를 보여드릴게요 Xcode 14의 Metal 의존성 뷰어는 전체 렌더러를 더 쉽게 시각화하거나 단일 단계를 확대해서 볼 수 있습니다 GPU 중심의 파이프라인을 쉽게 채택하거나 빠른 리소스 로딩과 동기화하기 위해 의존성 뷰어가 동기화 테두리를 포함하여 의존성을 판단하고 분석하는 걸 돕죠 Xcode 14의 가속 구조 뷰어를 개선하여 Metal 3의 최적화된 레이 트레이싱을 활용할 수 있죠 먼저 장면의 개별 프리미티브를 강조할 수 있습니다
프리미티브를 선택하면 관련된 프리미티브 데이터가 왼쪽 개요에 나타나죠
마지막으로 장면에 모션 정보가 있으면 가속 구조 뷰어가 다양한 시점을 시각화합니다
Xcode 14의 개발자 도구의 업데이트 사항을 알아봤죠 더 많은 기능으로 Dylib 지원과 새로운 리소스 목록 셰이더 에디터의 파일 탐색 기능 커스텀 버퍼 뷰어 레이아웃 등이 있죠 Metal 3의 도구와 개선 사항을 최대한 활용하는 방법을 더 알아보고 싶다면 다른 세션을 확인해 보세요 상급 그래픽, 게임과 프로 앱을 만드는 방법을 알려 줄 겁니다
오늘은 성능과 품질을 높이는 Metal 3의 상급 기능을 소개했죠 고품질 텍스처 스트리밍을 위한 빠른 리소스 로딩 끊김 현상, 로딩 시간 감소를 위한 오프라인 컴파일 짧은 시간에 고화질을 렌더하는 MetalFX 업스케일링 상급 지오메트리 처리를 위한 메시 셰이더 레이 트레이싱을 위한 빠른 가속 구조 빌드 인터섹션 및 셰이딩 그리고 더 빨라진 머신 러닝이 있습니다 마지막으로 소개해 드린 상급 기능을 통해 GPU 중심의 파이프라인과 레이 트레이싱을 사용할 수 있죠
새로운 코드 샘플과 문서를 확인하시려면 developer.apple.com/Metal을 방문하십시오 참여해 주셔서 감사합니다
-
-
0:01 - Device Family
if device.supportsFamily(.metal3) { // My awesome Metal 3 renderer }
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.