설치, 다운로드, 타입 지정 의사결정
Laya-CoreML은 macOS 15+와 Python 3.11–3.13을 갖춘 Apple Silicon에서 실행됩니다. 로컬 릴리스 검사는 M3 Max / macOS 27.2를 사용합니다. 이전 macOS 릴리스와 iOS 배포는 여기서 시험하지 않았습니다. 내보낸 ML Program은 macOS 15 / iOS 18을 대상으로 합니다.
python -m pip install laya-coreml
# Terminal demo and recording renderer:
python -m pip install 'laya-coreml[demo]'
추론은 Core ML Tools, NumPy, Tokenizers, Safetensors, Hugging Face Hub를
설치합니다. PyTorch, Transformers, MLX는 필요하지 않습니다. 선택적 [convert]
extra는 원래 체크포인트를 내보내기 위한 PyTorch를 설치합니다.
모델 선택
aac6fef/ 아래의 Hugging Face 번들 |
기기 기본값 | 총 입력 용량 | 배치 / 옵션 | 용도 |
|---|---|---|---|---|
| laya-coreml | CPU + GPU | 512 토큰 | 1 / 32 | 영어 Laya, 421M |
| laya-multilingual-coreml | CPU + GPU | 1024 토큰 | 1 / 32 | 범용 다국어, 322M |
| laya-typed-decisions-coreml | CPU + GPU | 1024 토큰 | 1 / 32 | 업스트림 typed-decisions 체크포인트 |
| laya-multilingual-coreml-snake | CPU + GPU | 64 토큰 | 3 / 4 | 배치 처리된 압축 Snake 프롬프트 |
| laya-multilingual-coreml-ane | CPU + ANE | 96 토큰 | 1 / 32 | 짧은 의사결정, FP16 본체 |
| laya-multilingual-coreml-ane-w8 | CPU + ANE | 96 토큰 | 1 / 32 | 근사 W8 팔레트 가중치, FP16 연산 |
ANE 패키지는 자체 호스트 임베딩/액션 가중치와 변경되지 않은 Core ML 본체를 포함합니다. 원래 체크포인트 디렉터리가 필요하지 않습니다. 96토큰 용량은 질문, 옵션 설명, 특수 마커, 상태를 포함합니다. 이 짧은 내보내기는 맞지 않는 요청을 거부합니다. 범용 모델은 전체 체크포인트 컨텍스트 한도에서 업스트림 상태 자르기를 유지하며, 옵션 설명도 원래 질문 프리픽스 예산을 사용합니다.
Python API
import laya_coreml as laya
agent = laya.load("aac6fef/laya-multilingual-coreml")
result = agent.predict(
"The customer asks for a refund of a duplicate payment.",
{
"department": {
"type": "choice",
"instructions": "Which department should handle this request?",
"criteria": {
"billing": "Payments, invoices, refunds, and duplicate charges.",
"technical": "Broken features, errors, and product troubleshooting.",
"sales": "Pricing, upgrades, and new purchases.",
},
},
"urgency": {
"type": "score",
"instructions": "How urgent is the request?",
"criteria": ["low", "medium", "high"],
},
"refund": {
"type": "noul",
"instructions": "Does the customer request a refund?",
},
},
)
print(result["answers"])
print(result["usage"]) # output_tokens is always 0
choice는 선택된 레이블과 모든 레이블의 확률을 돌려줍니다. score는 0 기준
기대 범주 인덱스, 그 범례, 확률을 돌려줍니다. noul은 참일 확률을 돌려줍니다.
답에는 업스트림 신뢰도와 액션 헤드 확률 필드도 포함됩니다. 이 추정치는 틀릴 수
있으며, 라이브러리의 검증은 변환 충실도를 측정할 뿐 애플리케이션 정확도를
측정하지 않습니다.
predict와 system_one은 별칭입니다. 딕셔너리 상태는 원래 입력 규칙으로
직렬화됩니다. 질문은 삽입 순서로 처리됩니다. 대부분의 내보내기는 배치 1을
사용하므로, 여러 질문에는 여러 모델 호출이 필요합니다. Snake GPU 내보내기는 최대
세 개를 배치 처리합니다. 양방향 인코더는 서로 다른 질문에 걸쳐 문맥 상태를
캐시하지 않습니다.
한 번 다운로드하고 오프라인으로 작업하기
hf download aac6fef/laya-multilingual-coreml-ane --local-dir models/ane
agent = laya.load("./models/ane", local_files_only=True)
# Or use a previously downloaded shared Hub cache:
agent = laya.load("aac6fef/laya-multilingual-coreml-ane", local_files_only=True)
원격 ID는 local_files_only=True가 아니면 초기화 전에 다운로드합니다. 이후
예측은 로컬 배열과 파일만 사용합니다. 정확한 원격 스냅샷을 재현하려면
revision="<Hub commit SHA>"를 전달하십시오. 릴리스 커밋 ID는
RELEASE.md에 있습니다. 터미널 게임은 항상 로컬/캐시된 가중치를
사용하며, 그것이 없으면 다운로드 명령과 함께 실패합니다.
Hugging Face의 공유 캐시는 모델 파일을 심볼릭 링크로 저장합니다. 시험한 macOS
릴리스에서 Core ML은 그 링크를 임시 컴파일 모델로 복사하면서 가중치 파일을
잃을 수 있습니다. 로더는 Core ML 패키지만 ~/.cache/laya-coreml/packages/
아래의 일반 파일로 자동 구체화하고, 콘텐츠 해시를 검증하고, 그 복사본을
재사용합니다. 이 캐시 루트를 바꾸려면 LAYA_COREML_CACHE를 설정하십시오. 이는
추가 디스크 공간을 쓰지만 추가 모델 다운로드는 아닙니다. hf download --local-dir로
만든 디렉터리는 이미 일반 파일을 담고 있어 복사가 필요하지 않습니다.
로더는 패키지 형식을 인식하고 기본 컴퓨트 유닛을 선택합니다. 명시적 실험에는
compute_units="cpu_gpu", "cpu_ne", "cpu", "all" 중 하나로
재정의하십시오. cpu_ne는 CPU 작업과 ANE 작업을 허용하며, 모든 연산이 ANE에서
실행됨을 보장하지는 않습니다. 일반 SDPA 내보내기에 그것을 골라도 그 내보내기가
전용 ANE 그래프로 바뀌지는 않습니다.
CLI
질문 딕셔너리를 questions.json에 저장한 뒤 실행하십시오.
laya-coreml predict ./models/ane --offline \
--state 'The customer requests a refund.' --questions questions.json
laya-coreml predict는 로컬 디렉터리 또는 Hub ID, 선택적 --revision,
--compute-units를 받습니다. --offline은 Hub 접근을 막습니다.
소스에서 변환
일반 Core ML 경로:
pip install 'laya-coreml[convert]'
laya-coreml convert laya-multilingual models/custom-multilingual
ANE 연구 내보내기는 추론 휠 밖의 Git 체크아웃에 있습니다.
git clone https://github.com/mizorewww/laya-coreml
cd laya-coreml
pip install -e '.[convert,dev,research]'
python -m experiments.ane_engineering.probe --source laya-multilingual \
--kind body --length 96 --output models/ane96
해당 워크플로는 변환 결과, ANE 엔지니어링, Snake 조작과 녹화를 참조하십시오.