PyTorch MPS 공식 문서는 MPS 백엔드가 float64와 complex128을 지원하지 않는다고 명시합니다. 따라서 PyTorch 2.15 MPS 이중 정밀도 오류가 나면, 이 정밀도가 필요한 계산은 CPU에서 실행하세요. 과학적 기준이 단정밀도를 허용할 때만 MPS에서 float32 경로를 따로 시험하고 CPU 결과와 대조해야 합니다.
이 글은 Apple Silicon Mac에서 PyTorch 연구 코드를 실행하다 double 또는 float64 오류를 만난 대학원생, 연구자와 모델 개발자를 위한 안내입니다.
연구실 장비의 macOS 검증 환경을 관리하는 담당자도 백엔드 상태와 결과를 재현 가능한 방식으로 점검할 수 있습니다.
확인 기준: PyTorch 2.15는 2026년 10월 28일 공식 발표됐습니다. 발표 자료에 MPS 업데이트가 있다고 해서
float64지원 제한까지 해제됐다고 볼 수는 없습니다. 버전 발표와 데이터 형식 지원은 각각 확인해야 합니다. PyTorch 2.15 공식 발표와 MPS 백엔드 문서를 함께 확인하세요.
마지막 업데이트: 2026년 11월 11일. PyTorch 2.15 공식 발표, MPS 백엔드 문서와 수치 정확도 문서를 기준으로 확인했습니다.
PyTorch 2.15 MPS 이중 정밀도 오류와 백엔드 오류는 다릅니다
오류에 float64, double 또는 MPS 장치로 변환할 수 없다는 내용이 있다면, 먼저 문제의 텐서 자료형과 장치를 확인하세요. MPS가 작동하지 않는 문제인지, 작동 중인 MPS에 지원되지 않는 자료형을 보내는 문제인지 구분해야 합니다.
PyTorch MPS는 Apple Silicon Mac의 GPU 연산 경로를 제공합니다. 다만 백엔드가 사용 가능하다는 사실과 모든 자료형 및 연산이 지원된다는 사실은 서로 다릅니다. 공식 문서에서 float64와 complex128 제한을 확인하고, 문제의 계산이 실제로 이 자료형을 요구하는지 살펴보세요.
오류 메시지에서 자료형과 장치를 확인합니다
double은 PyTorch에서 흔히 torch.float64를 가리키는 자료형 이름입니다. 오류가 발생한 줄만 보는 대신, 그 줄로 전달되는 입력 텐서와 모델 파라미터의 자료형 및 장치를 함께 기록하세요. 데이터 로더나 전처리 단계에서 예상하지 못한 형식으로 만들어진 텐서가 원인일 수도 있습니다.
다음처럼 문제가 생기는 계산을 작게 분리하면 원인을 좁히기 쉽습니다.
print("input:", x.dtype, x.device)
print("parameter:", next(model.parameters()).dtype,
next(model.parameters()).device)
y = model(x)
입력과 파라미터가 모두 float32라고 확인하기 전에는 모델 전체의 자료형을 바꾸지 마세요. 일부 중간 결과만 float64이거나, 계산 중 새 텐서가 다른 자료형으로 만들어질 수 있습니다.
PyTorch MPS가 float64를 지원하지 않는 이유는 무엇인가요?
여기서는 지원 여부를 임의로 추정할 필요가 없습니다. PyTorch의 MPS 백엔드 문서가 해당 자료형의 제한을 밝히고 있습니다. 계산이 반드시 이중 정밀도를 요구하면 CPU로 보내고, 요구하지 않는 계산만 float32 경로로 따로 검증하세요.
백엔드 사용 가능 여부를 먼저 구별합니다
float64 오류와 MPS 자체를 사용할 수 없는 상태는 서로 다른 문제입니다. 공식 MPS 문서에서 제공하는 점검 API로 빌드 지원 여부와 현재 환경에서의 사용 가능 여부를 각각 검사하세요.
import torch
print("MPS built:", torch.backends.mps.is_built())
print("MPS available:", torch.backends.mps.is_available())
is_built()와 is_available()은 같은 질문에 답하는 함수가 아닙니다. 설치한 PyTorch가 MPS 지원으로 만들어졌는지, 현재 장치와 시스템에서 MPS를 사용할 수 있는지 구분해 확인하세요. 두 검사 결과를 기록하면 설치나 환경 문제를 자료형 제한으로 오인할 가능성이 줄어듭니다. 세부 조건과 확인 방식은 PyTorch MPS 사용 가능 여부 안내에서 확인할 수 있습니다.
| 확인 항목 | 관찰되는 상태 | 다음 조치 |
|---|---|---|
| MPS 지원 빌드와 현재 사용 가능 여부 | 사용할 수 없음 | 설치된 빌드와 장치·시스템 조건을 확인하고, 자료형 변경만으로 해결하려 하지 않습니다. |
MPS 사용 가능, 입력이나 파라미터가 float64 |
자료형 제한 가능성이 큼 | 이중 정밀도가 필요한 계산은 CPU에 둡니다. |
| MPS 사용 가능, 자료형은 지원되는 것으로 보이나 특정 연산에서 실패 | 연산자 지원 경계일 수 있음 | 실패하는 연산을 최소 사례로 분리하고 CPU 경로와 대조합니다. |
| 실행은 되지만 결과가 달라짐 | 결과 검증 문제 | 같은 입력으로 CPU 기준 결과를 만들고 연구별 판정 기준에 따라 평가합니다. |
PyTorch 2.15의 새 MPS 기능 목록은 특정 변경 사항을 설명할 뿐, 모든 모델과 연산자, 자료형을 한꺼번에 보장하지 않습니다. 릴리스에서 기능을 확인한 뒤에도 실제 프로젝트에서 사용하는 연산 경로를 별도로 점검해야 합니다.
이중 정밀도가 필요하면 CPU에 두고, MPS와 나눕니다
이중 정밀도를 요구하는 단계는 CPU에서 처리하고, 프로젝트 기준상 단정밀도를 허용하는 단계만 MPS에서 시험하는 편이 안전합니다. float64 데이터를 단순히 float32로 바꾸면 실행 오류는 사라질 수 있지만, 그 결과가 연구 목적에 적합하다는 뜻은 아닙니다.
| 선택지 | 적합한 상황 | 주의할 점 | 결정 기준 |
|---|---|---|---|
CPU에서 float64 유지 |
정밀도 요구가 명시된 계산, 민감한 중간 결과 | MPS와 CPU 사이의 자료형·장치 이동을 관리해야 합니다. | 연구 설계가 이중 정밀도를 요구하면 이 경로를 우선합니다. |
MPS에서 float32 시험 |
연구 기준이 단정밀도를 허용하고 필요한 연산이 실행되는 경우 | 모델 전체의 연산자 지원과 결과 차이를 확인해야 합니다. | CPU 기준 결과와 연구별 합격 기준을 모두 통과할 때만 채택합니다. |
| CPU와 MPS로 단계 분리 | 일부 단계만 GPU 실행이 가능하거나 정밀도 요구가 단계별로 다른 경우 | 장치 이동과 중간값 자료형이 예상대로 유지되는지 확인해야 합니다. | 단계별 결과를 기록하고 각 경계에서 값과 자료형을 검사합니다. |
과학 계산에서 어떤 단계를 CPU 이중 정밀도로 옮겨야 하나요?
코드 전체를 한 번에 옮기기보다, 오류가 발생한 연산부터 확인하세요. 그 단계가 float64를 요구한다면 해당 입력, 중간 결과와 관련 연산을 CPU에 유지합니다. 그 결과를 받는 후속 단계도 장치가 자동으로 일치한다고 가정하지 말고, 실제 텐서의 device와 dtype을 확인하세요.
텐서를 옮길 때는 PyTorch의 .to() 인터페이스를 사용할 수 있습니다. 다만 장치 변경과 자료형 변경은 서로 다른 조작입니다. 텐서 .to() 문서를 참고해 필요한 변환을 명시하고, 각 변환 직후 자료형과 장치를 출력해 확인하세요.
# 이중 정밀도 계산은 CPU에서 수행
x_cpu = x.to(device="cpu", dtype=torch.float64)
y_cpu = sensitive_step(x_cpu)
# 단정밀도 사용을 연구 기준상 허용하는 경우에만 별도 시험
x_mps = x.to(device="mps", dtype=torch.float32)
y_mps = candidate_step(x_mps)
위 예시는 모든 모델에 적용되는 변환 지침이 아닙니다. sensitive_step과 candidate_step은 프로젝트의 실제 계산 단계로 바꿔야 하며, CPU 결과와 MPS 결과를 같은 작업으로 비교해야 합니다.
float32 MPS 경로는 연산자와 결과를 따로 검증합니다
프로젝트가 단정밀도를 허용하더라도 모델 전체를 일괄 변환하기보다, 오류를 재현하는 최소 계산부터 시작하세요. MPS에 텐서를 보낼 수 있다는 사실만으로 그 뒤의 모든 연산이 해당 장치에서 실행된다고 판단해서는 안 됩니다.
PyTorch 모델을 float32로 바꾼 뒤 결과가 믿을 만한지는 어떻게 확인하나요?
같은 입력과 같은 전처리 조건으로 CPU 기준 결과를 만들고, MPS 결과를 연구 질문에 직접 연결되는 지표로 비교하세요. 허용 오차는 보편적인 퍼센트를 가져다 쓰지 말고 연구 설계나 팀이 미리 정한 합격 기준을 사용해야 합니다.
검증은 다음 순서로 진행합니다.
- 오류를 일으키는 입력과 계산을 최소 사례로 분리합니다. 입력 자료형, 장치, 모델 파라미터의 상태를 실행 로그에 남깁니다.
- 정밀도 요구를 연구 문서나 팀의 판정 기준에서 확인합니다. 명확한 기준이 없다면 먼저 검증 책임자와 합의하고,
float32를 기본값으로 간주하지 않습니다. - 최소 사례를 CPU에서 실행해 기준 결과를 확보합니다. 입력과 전처리가 MPS 시험 경로와 같도록 맞춥니다.
- 단정밀도가 허용되는 계산만 MPS에서 실행하고, 오류가 발생하는 연산자와 장치 이동 지점을 기록합니다.
- 결과의 원소별 차이만 보지 말고, 연구에서 중요한 통계량과 후속 분석의 결론이 바뀌는지 확인합니다. 허용 기준은 프로젝트에서 정한 판정 기준과 대조합니다.
- 결과가 기준을 통과하면 실제 데이터와 전체 모델 경로에서 다시 점검합니다. 실패하면 해당 계산을 CPU에 남기거나 연구 기준에 맞는 자료형과 실행 경로를 다시 설계합니다.
수치 정확도는 자료형만으로 결정되지 않습니다. 입력값의 범위, 연산 순서와 누적 계산이 결과에 영향을 줄 수 있으므로, PyTorch 수치 정확도 안내를 참고하고 연구에 중요한 통계량을 직접 비교하세요. NaN이나 무한대가 생겼는지 확인할 때는 torch.isfinite 문서의 검사 기능을 사용할 수 있습니다.
assert torch.isfinite(y_cpu).all()
assert torch.isfinite(y_mps).all()
이 검사는 결과에 유한하지 않은 값이 있는지 찾는 용도입니다. 두 실행 결과가 연구 기준 안에서 일치하는지 판정해 주지는 않으므로, 별도의 통계량과 하위 분석 확인이 필요합니다.
MPS 사용 가능 표시가 전체 모델의 GPU 실행을 뜻하지는 않습니다
MPS 사용 가능 여부 검사를 통과하면 모델 전체가 GPU에서 실행되나요?
아닙니다. 검사는 환경에서 MPS 백엔드를 사용할 수 있는지 확인하는 절차이지, 모델의 모든 연산자와 자료형이 MPS에서 실행된다는 보증은 아닙니다. 실제 입력과 계산을 실행하고 장치 배치 및 오류를 확인해야 합니다.
지원되지 않는 연산자의 처리 방식이 문제라면 MPS 환경 변수 설명에서 대체 실행 관련 설정을 확인할 수 있습니다. 설정을 바꾸는 경우에는 적용 전후의 실행 경로를 기록하고, CPU 기준 결과와 연구 판정까지 다시 확인하세요. 자동 대체를 켜는 일은 이중 정밀도 요구를 없애거나 결과 검증을 대신하지 않습니다.
어떤 계산은 계속 CPU에 두어야 하나요?
프로젝트가 이중 정밀도를 요구하는 계산은 CPU에 둡니다. 그 밖에도 MPS에서 실행할 수 없는 연산자나 결과 검증을 위해 별도로 유지할 기준 경로가 있다면, 각 단계를 나눠 실행하세요. GPU 사용 비율 자체를 목표로 삼기보다 연구 질문을 만족하는 정밀도와 재현 가능한 결과를 우선해야 합니다.
Apple Silicon Mac 검증 환경은 필요한 조건부터 확인합니다
실험실에 쓸 수 있는 Apple Silicon Mac이 없고 실제 macOS의 MPS 경로를 확인해야 한다면, 원격 환경을 검토할 수 있습니다. 다만 계약이나 작업 예약 전에 실제 칩과 macOS 버전, PyTorch 빌드, 접속 방식이 프로젝트의 검증 조건에 맞는지 확인하세요. 이 글에서는 특정 원격 환경의 구성이나 지원 범위를 확인할 수 없으므로, 제공 페이지의 실제 정보를 기준으로 판단해야 합니다.
| 검증 항목 | 확인할 내용 | 확인하지 않으면 생기는 문제 |
|---|---|---|
| 칩과 시스템 | Apple Silicon 여부와 실제 macOS 버전 | 목표 환경과 다른 장치에서 시험할 수 있습니다. |
| PyTorch 환경 | 버전, MPS 지원 빌드, 자료형 제한 | 환경 차이를 코드 결함이나 결과 차이로 오인할 수 있습니다. |
| 접속과 작업 방식 | 원격 터미널 또는 그래픽 작업에 필요한 접속 수단 | 연구 코드 실행이나 결과 확인 방식이 맞지 않을 수 있습니다. |
| 재현 기록 | 코드, 입력, 실행 조건과 결과를 저장할 수 있는지 | 팀원이 같은 검증을 다시 수행하기 어려워집니다. |
원격 Mac 환경은 macOS 검증 장비가 없는 연구팀에 보완책이 될 수 있지만, 이중 정밀도 요구를 해결해 주거나 연구 결과를 자동으로 승인해 주지는 않습니다. 장기간 지속적으로 무거운 계산을 수행해야 하거나 특정 물리 포트와 주변 장치가 필요한 경우에는 직접 보유한 장비나 기관의 계산 환경이 더 적합할 수 있습니다.
원격 환경의 접속 방식과 운영 조건을 여러 선택지와 대조하려면 원격 Mac 환경 비교 안내도 살펴보세요. 비교할 때는 연구실의 승인 절차와 필요한 작업 방식을 먼저 정리한 뒤 실제 제공 조건을 확인해야 합니다.
현재 연구실의 Linux 또는 Windows 서버만으로는 macOS에서의 MPS 경로를 그대로 재현할 수 없고, 새 장비를 구매하면 검증 기간이 짧아도 소유 비용과 관리 부담이 생깁니다. 반면 원격 Mac은 사용 기간에 맞춰 실제 macOS 환경을 확인할 선택지가 될 수 있지만, 칩·시스템·접속 조건을 먼저 검토해야 합니다. 필요한 기간에만 환경을 마련하려면 VpsHold의 한국어 원격 Mac 환경 안내를 확인하세요. 다만 임대 여부와 관계없이 float64 계산은 CPU 기준으로 두고, MPS 경로는 연구별 결과 기준을 통과한 뒤에만 채택해야 합니다.
정밀도 검증에 맞는 전용 맥을 이용해 보세요
VpsHold의 전용 실물 맥에서 연산 환경을 구성하고 정밀도가 필요한 작업을 이어가세요.
