본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 06. 15. 09:39

pmetal: Rust로 작성된 Apple Silicon용 ML SDK, 프레임워크 및 애플리케이션 제품군

요약

pmetal은 Rust로 작성된 Apple Silicon 전용 머신러닝 플랫폼으로, Metal GPU와 Apple Neural Engine(ANE)을 활용합니다. GUI와 TUI를 모두 지원하며 모델 학습, 추론, 양자화, 지식 증류 등 통합적인 ML 워크플로우를 제공합니다.

핵심 포인트

  • Rust 기반의 고성능 Apple Silicon 최적화 ML SDK 및 프레임워크
  • Tauri와 Svelte를 활용한 시각적인 데스크톱 GUI 제공
  • LoRA, QLoRA, GRPO 등 최신 학습 기법 및 지식 증류 지원
  • 터미널 환경을 위한 강력한 TUI 제어 센터 포함

Powdered Metal — Rust로 작성된 Apple Silicon용 ML SDK, 프레임워크 및 애플리케이션 제품군입니다.

PMetal은 저수준 Metal GPU 커널 및 Apple Neural Engine (ANE) 통합부터 고수준 학습 API, 터미널 TUI, 그리고 완전한 데스크톱 GUI에 이르기까지 Apple Silicon을 위한 완전한 머신러닝 (ML) 플랫폼입니다. Apple 생태계를 벗어나지 않고도 미세 조정 (Fine-tuned)된 모델을 배포할 수 있습니다.

시각적인 모델 관리, 학습 및 추론을 위한 완전한 Tauri + Svelte 데스크톱 애플리케이션입니다.

cd crates/pmetal-gui
bun install && bun tauri dev

Dashboard, Models, Datasets, Training, Distillation, GRPO, Inference, Merging, Quantize, Settings 등 10개의 페이지로 구성됩니다. GUI에서 HuggingFace로부터 모델을 다운로드하고, 실시간 손실 (Loss) 지표와 함께 LoRA 학습을 구성하며, 모델과 채팅하고, 가중치를 병합 (Merge)하고, 양자화 (Quantize)할 수 있습니다. 학습은 프로세스 내에서 실행되며 실시간 진행 상황 업데이트를 제공합니다.

9개의 탭을 갖춘 기능이 풍부한 터미널 제어 센터입니다.

pmetal tui

설명
Dashboard실시간 손실 곡선 (점자), 학습률 (LR) 스케줄, 처리량 (Throughput) 스파크라인, 타이밍 분석 게이지
DeviceGPU/ANE 정보, Metal 기능 탐지, 메모리 게이지, 커널 튜닝, UltraFusion 토폴로지
Models캐시된 모델 탐색, HuggingFace Hub 검색 (S ), 메모리 적합성 추정, 다운로드
Datasets로컬 데이터셋 (JSONL, Parquet, CSV) 스캔 및 라인 수와 함께 미리보기
Training섹션별 파라미터 양식을 사용하여 SFT/LoRA/QLoRA 학습 실행 구성 및 시작
Distillation지식 증류 (Knowledge Distillation) 구성 (온라인, 오프라인, 점진적 방식)
GRPO보상 함수 (Reward functions) 및 샘플링 파라미터를 사용한 GRPO/DAPO 추론 학습 구성
Inference마크다운 렌더링 및 생성 설정 사이드바를 갖춘 대화형 채팅 인터페이스
Jobs로그 뷰어, 상태 추적 및 메타데이터를 포함한 학습 실행 이력

단축키: Tab / Shift+Tab은 탭 전환, Alt+1-9는 직접 접근, L은 실행 중 학습률 조정, q는 종료입니다.

시퀀스 패킹 (sequence packing)을 사용한 LoRA 미세 조정 (fine-tuning) (기본값)

pmetal train --model Qwen/Qwen3-0.6B --...

명령어설명
trainLoRA/QLoRA/DoRA를 이용한 미세 조정 (SFT)
infer채팅, 도구 사용 (tool use), 사고 모드 (thinking mode)를 포함한 대화형 추론
distill지식 증류 (Knowledge distillation) (온라인, 오프라인, 점진적 방식)
grpoGRPO/DAPO 추론 학습 (VLM, 투기적 (speculative), 비동기 보상 (async rewards))
rlkd지식 증류를 결합한 강화 학습 (Reinforcement Learning with Knowledge Distillation)
embed-trainSentence-transformer 미세 조정 (InfoNCE, Triplet, CoSENT)
search메모리 적합도 추정 (memory fit estimation)을 포함한 HuggingFace Hub 검색
downloadHuggingFace Hub에서 모델 다운로드
merge두 개 이상의 모델 병합 (12가지 전략)
quantizeGGUF 양자화 (13가지 포맷 옵션)
fuseLoRA 어댑터 가중치를 베이스 모델에 병합 (fuse)
eval데이터셋에 대한 모델 퍼플렉시티 (perplexity) 평가
serveOpenAI 호환 추론 서버 (기능 제한적 (feature-gated))
tui전체 TUI 제어 센터 (9개 탭)
dashboard실시간 학습 지표 시각화
dataset데이터셋 유틸리티: analyze, download, convert
ollamaOllama 통합: modelfile, create, templates
info장치 정보 표시 (GPU, ANE, 대역폭 (bandwidth), NAX)
memory메모리 사용량 및 사용 가능한 용량 표시
init샘플 설정 파일 생성
bench학습 성능 벤치마크
bench-gen생성 루프 타이밍 벤치마크
bench-ffiFFI 오버헤드 벤치마크
bench-workload실제 캐시된 추론/학습 워크로드 벤치마크
bench-corpusJSON 보고를 포함한 구조화된 커널 벤치마킹
mcpMCP 서버 시작 (Claude Desktop / MCP 클라이언트를 위한 45개 도구)
cluster멀티 Mac 클러스터: 피어(peer) 검색, 기기 간 학습, all-reduce / 파이프라인 벤치마크 실행

두 대 이상의 Apple Silicon Mac을 "홈 클러스터(home cluster)"로 연결하여 분산 학습 (distributed training) 및 추론 (inference)을 수행할 수 있습니다. PMetal은 장치 내의 모든 NIC (Thunderbolt-Bridge, Ethernet, Wi-Fi)를 자동으로 감지하고, mDNS를 통해 이를 알리며, 가장 빠른 패브릭 (fabric)에 편향된 링 (ring)을 형성합니다. 별도의 설정 없이도 Ethernet보다 Thunderbolt 케이블을, Wi-Fi보다 Ethernet을 우선적으로 선택합니다.

# 1. Mac들을 연결합니다 (Thunderbolt-4/5 케이블 권장; Ethernet도 가능).
# 2. 모든 Mac에서 다음을 실행합니다:
pmetal cluster status # 로컬 NIC 및 이미 알림을 보내고 있는 피어(peer) 표시
...

pmetal cluster status

출력 예시:

Local peer: 12D3KooW…XyZ (rank 0/2)
Thunderbolt ring: yes
Local interfaces:
...

현재 구현된 기능: 그래디언트 올리듀스 (gradient all-reduce, 실제 멀티 머신 학습 가능), Thunderbolt > Ethernet > Wi-Fi 우선순위를 가진 패브릭 인식 링 형성 (fabric-aware ring formation), 작업 도중 케이블이 뽑혔을 때의 자동 패브릭 폴백 (automatic fabric fallback), 그래디언트 압축 (gradient compression; TopK, FP16/BF16/INT8 양자화 (quantization), 에러 피드백 (error feedback)), 그리고 멀티 프로세스 통합 테스트가 완료된 전송 테스트 기반 파이프라인 하네스 (transport-tested pipeline harness)입니다. 아키텍처별 부분 레이어 실행 (per-architecture partial-layer execution, 단일 Mac에 들어가지 않는 모델을 서빙하기 위한 전제 조건)이 다음 단계입니다. 하네스는 준비되었으며, 현재 병목 지점은 모델 API입니다.

PMetal은 임베디드 가능한 SDK입니다. 학습, 추론 및 모델 연산을 귀하의 Rust 애플리케이션에 통합할 수 있습니다. easy 모듈은 고수준 빌더 (high-level builders)를 제공하며, 하위 크레이트 (pmetal-trainer, pmetal-models, pmetal-lora 등)는 모든 파이프라인 단계에 대한 완전한 제어권을 제공합니다.

use pmetal::easy;
// LoRA를 이용한 미세 조정 (Fine-tune)
let result = easy::finetune("Qwen/Qwen3-0.6B", "train.jsonl")
...

사용 가능한 빌더: easy::finetune(), easy::dpo(), easy::simpo(), easy::orpo(), easy::kto(), easy::infer().

더 낮은 수준의 제어가 필요한 경우 크레이트를 직접 사용하십시오 — pmetal-trainer::TrainingLoop, pmetal-models::DynamicModel, pmetal-lora::DynamicLoraModel, pmetal-distill::Distiller 등. examples/를 참조하십시오.

수동 학습 루프 오케스트레이션 (orchestration) 및 ANE 전용 워크플로우를 포함한 완전한 작동 예제를 확인할 수 있는 디렉토리입니다.

PMetal은 PyO3를 통해 Python 확장 모듈을 노출합니다. crates/pmetal-py에서 maturin develop 명령어로 설치하십시오.

import pmetal
# 적절한 기본값으로 미세 조정 (Fine-tune)
result = pmetal.finetune(
...
import pmetal
# 학습 구성 요소 설정
lora_config = pmetal.LoraConfig(r=16, alpha=32.0)
...

사전 빌드된 서명된 바이너리 (signed binaries)는 Releases 페이지에서 사용할 수 있습니다.

Crates는 crates.io에서 사용할 수 있습니다.

소스에서 빌드하기:

git clone https://github.com/epistates/pmetal.git && cd pmetal
cargo build --release # CLI + TUI
cd crates/pmetal-gui && bun install && bun tauri build # GUI (선택 사항)

PMetal은 시작 시 Apple Silicon의 성능을 자동으로 감지하고 그에 따라 커널 파라미터 (kernel parameters)를 조정합니다.

칩 제품군 (Chip Family)GPU 제품군 (GPU Family)NAXANEUltraFusion상태 (Status)
M1 / Pro / Max / UltraApple7-16 coresUltra: 2-die완벽 지원
...M5 / Pro / Max / UltraApple10Yes16 coresUltra: 2-die

자동 감지된 기능 (Auto-detected features): GPU 제품군, 디바이스 티어 (device tier), 코어 수, 메모리 대역폭 (memory bandwidth), 동적 캐싱 (dynamic caching), 메시 셰이더 (mesh shaders), NAX (M5+), UltraFusion 토폴로지 (via sysctl hw.packages), ANE 가용성.

티어 기반 커널 튜닝 (Tier-based kernel tuning): 행렬 타일 크기 (Matrix tile sizes), FlashAttention 블록 크기, 융합 커널 스레드 그룹 크기 (fused kernel threadgroup sizes), 배치 승수 (batch multipliers)는 디바이스 티어 (Base/Pro/Max/Ultra) 및 GPU 제품군을 기반으로 자동 선택됩니다. 전체 튜닝 매트릭스 (tuning matrix)에 대해서는 docs/hardware-support.md를 참조하십시오.

PMetal은 20개의 특화된 크레이트 (crates)로 구성된 Rust 워크스페이스 (workspace)로 조직되어 있습니다:

pmetal/
├── pmetal-bridge # 제로 할당 (Zero-allocation) MLX C++ 브리지 (inline array FFI)
├── pmetal-core # 기반 (Foundation): 설정 (configs), 트레이트 (traits), 타입 (types), 에러 처리 (error handling)
...

pmetal 파사드 (facade) 크레이트는 기능 플래그 (feature flags)와 함께 모든 모듈을 재내보내기 (re-exports) 하며, 빠른 시작 사용을 위한 easy API를 제공합니다.

아래의 모든 인과적 언어 모델 (causal language models)은 HuggingFace Hub 또는 로컬 safetensors에서 로드할 수 있으며, CLI, TUI, GUI 또는 SDK를 통해 생성 (generation) 용도로 사용할 수 있습니다.

제품군 (Family)아키텍처 (Architecture)변형 (Variants)model_type
LlamaLlama2, 3, 3.1, 3.2, 3.3llama , llama3
Llama 4Llama4Scout, Maverickllama4
Qwen 2Qwen22, 2.5qwen2 , qwen2_5
Qwen 3Qwen33qwen3
Qwen 3 MoEQwen3MoE3-MoEqwen3_moe
Qwen 3.5Qwen3Next3.5 (Next)qwen3_next , qwen3_5
DeepSeekDeepSeekV3, V3.2, V3.2-Specialedeepseek , deepseek_v3
MistralMistral7B, Mixtral 8x7Bmistral , mixtral
GemmaGemma2, 3gemma , gemma2 , gemma3
Phi 3Phi3, 3.5phi , phi3
Phi 4Phi44phi4
CohereCohereCommand Rcohere , command_r
GraniteGranite3.0, 3.1, Hybrid MoEgranite , granitehybrid
NemotronHNemotronHHybrid (Mamba+Attention)nemotron_h
GPT-OSSGptOss20B, 120Bgpt_oss , gpt-oss
Gemma 4Gemma44gemma4 , gemma4_text
제품군 (Family)아키텍처 (Architecture)변형 (Variants)model_type
BERTBertBERT, RoBERTa, DistilBERT, XLM-RoBERTabert , roberta , distilbert , xlm-roberta , xlm_roberta

DynamicLoraModel에 구현이 되어 있는 모델에 대해서는 LoRA 학습 (LoRA training)이 지원됩니다.

아키텍처 감지는 자동으로 이루어집니다. pmetal train을 모델 디렉토리나 HuggingFace ID로 지정하기만 하면 됩니다.

아키텍처 (Architecture)LoRAQLoRA비고 (Notes)
LlamaLlama 2, 3, 3.1, 3.2, 3.3을 포함합니다. 그래디언트 체크포인팅 (Gradient checkpointing)이 지원됩니다.
...

다음 아키텍처들은 pmetal-models에 구현되어 있으나, DynamicModel 디스패처 (dispatcher)에 연결되어 있지 않아 CLI 또는 DynamicModel::load()를 통해 로드할 수 없습니다:

제품군 (Family)모듈 (Module)비고 (Notes)
Pixtralpixtral12B 시각-언어 모델 (vision-language model)
Qwen2-VLqwen2_vl2B, 7B 시각-언어 모델 (vision-language model)
MLlamamllamaLlama 3.2-Vision
CLIPclipViT-L/14 시각 인코더 (vision encoder)
WhisperwhisperBase, Small, Medium, Large 음성 모델 (speech models)
T5t5인코더-디코더 아키텍처 (Encoder-decoder architecture)

이 모듈들은 Rust 타입(예: pmetal_models::architectures::pixtral::Pixtral)을 통해 직접 사용할 수 있지만, 수동으로 가중치(weight)를 로드해야 합니다.

제품군 (Family)변체 (Variants)상태 (Status)
Flux1-dev, 1-schnell디스패처 (Dispatcher) + 파이프라인 (pipeline) 구현됨

모든 학습 방법은 콜백 기반 취소 (should_stop()), 메트릭 (metrics) JSONL 로깅, 그리고 적응형 학습률 (adaptive learning rate) 제어를 지원합니다.

방법 (Method)CLIGUITUI라이브러리 (Library)
SFT (지도 미세 조정, Supervised Fine-Tuning)traineasy::finetune()
LoRAtraineasy::finetune()
QLoRA (4-bit)train --quantization nf4easy::finetune()
DoRAtrain --doraeasy::finetune()
DPO (직접 선호도, Direct Preference)easy::dpo()
SimPO (단순 선호도, Simple Preference)easy::simpo()
...GrpoTrainer
DAPO (분리된 GRPO, Decoupled GRPO)grpo --dapoGrpoTrainer DAPO 모드
지식 증류 (Knowledge Distillation)distillDistiller
TAID (시간 적응형, Temporally Adaptive)TaidDistiller
ANE 학습 (ANE Training)train (자동)AneTrainingLoop
RLKD (RL + 증류, RL + Distillation)rlkdRlkdTrainer
임베딩 학습 (Embedding Training)embed-trainEmbeddingTrainer

라이브러리를 통해서만 사용할 수 있는 추가 방법: GSPO (GspoTrainer), PPO (PpoTrainer), Online DPO (OnlineDpoTrainer), 확산 학습 (Diffusion Training, DiffusionTrainer).

커스텀 Metal 셰이더 (shaders)는 상당한 속도 향상을 제공합니다:

FlashAttention: 융합된 softmax (fused softmax)를 사용하는 O(n) 메모리 어텐션 (attention), 티어 인지형 블록 크기 (tier-aware block sizes)
Fused GDN: Gated Delta Network 재귀 커널 (FLA Triton에서 포팅됨) — SIMD 리덕션 (reductions)을 이용한 단일 패스 상태 업데이트 (single-pass state update)
Fused LoRA: 어댑터 레이어 (adapter layers)를 위한 결합된 순전파 (combined forward pass) (lora-metal-fused 기능 사용 시 약 2배 속도 향상)
Fused Cross-Entropy: 청크 단위 어휘 손실 (chunked vocabulary loss) 계산
Fused Linear Cross-Entropy: 로짓 (logits) 실체화 (materialization)를 완전히 생략
Fused RoPE: 커널 내 회전 위치 임베딩 (Rotary position embeddings)
Fused SwiGLU: 티어 최적화된 스레드 그룹 (tier-tuned threadgroups)을 사용하는 융합된 게이트 + 활성화 함수 (fused gate + activation)
Fused RMSNorm + LoRA: 결합된 정규화 (normalization) 및 어댑터 투영 (adapter projection)
Fused Sampler: JIT 컴파일된 토큰 샘플링 (token sampling)
Fused MLP: 결합된 gate/up/down 투영 (projections)
Async Scheduler: 더블/트리플 버퍼링된 GPU 명령 스케줄링 (GPU command scheduling)

전력 효율적인 학습 및 추론을 위한 네이티브 ANE 통합:

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0