대상: NandhaKishorM/laya (Convai Innovations, Apache-2.0) — 텍스트를 생성하지 않고 단일 순전파로 유형화된 답(choice/score/noul)을 내놓는 System 1 의사결정 엔진
기기: Galaxy S25 (SM-S931N, Snapdragon 8 Elite / SM8750) · Termux · Python 3.14.6 · CPU 전용 (GPU/MLX 없음)
결론: 폰 CPU에서 완전 오프라인 추론 성공. 정확도도 정상(README 기대와 방향 일치). 속도는 릴스 데모(애플 실리콘 MLX, 86.5 decisions/s) 대비 자릿수 2개 느리지만, 질문 몇 개짜리 검수 작업이면 실용적.
➕ 후속 실험: 같은 입력을 TypeSafe Jev(API, jev-1.13.0)와 비교한 결과는 아래 COMPARISON.md — 한국어 churn에서 Jev 0.97 vs Laya 0.009 격차, 멀티스레드 재현성 문제 발견.
| 테스트 | 결과 |
|---|---|
| 영어 421M (fp16 842MB) — 중복 결제 불만 이메일 | department: billing (conf 0.76), urgency 1.39, churn 0.81 — README 기대(billing, conf 0.94)와 방향 일치 |
| 다국어 322M (614MB), 한국어 입력 | "3월 요금이 두 번 결제됐습니다…" → billing 정답, 1.7초 / 2질문 |
| 스레드 튜닝 | 4스레드 최적 (3질문 6.8s) · 2스레드 7.8s · 8스레드 13.2s — 빅·리틀 코어 혼용이라 8스레드는 오히려 절반 속도 |
# 1. torch + tokenizers — TUR 사전 빌드 (PyPI manylinux 휠은 안드로이드에서 안 돌아감)
pkg install -y python-torch python-tokenizers # torch 2.11.0, numpy 자동 설치
# 2. safetensors — apt에 없어서 Rust 빌드
pkg install -y rust
pip install maturin # 소스 빌드, 몇 분
pip install safetensors # maturin으로 빌드 (0.8.0 확인)
# 3. transformers + laya — 의존성 자동 설치를 피해 수동 구성
pip install --no-deps laya transformers "huggingface_hub<1.0"
pip install filelock regex requests tqdm packaging pyyaml모델은 첫 실행 때 자동 다운로드(영어 842MB, 다국어 614MB) → ~/.cache/huggingface.
- transformers 5.x는 laya 0.3.4와 호환 안 됨 — 5.17.0에서는 conf 0.04짜리 가비지 출력(
sales 0.04, README 기대는billing 0.94).transformers==4.57.6으로 내리니 정상 출력. laya의>=4.45.0요구만 믿으면 안 된다. - transformers 4.57.6의 버전 상한 —
huggingface_hub<1.0(0.36.2로 하향),tokenizers<=0.23.0인데 apt tokenizers는 0.23.2 →dependency_versions_table.py에서<=0.23.0제거하는 한 줄 패치로 통과. - 스레드 수 —
torch.set_num_threads(4)가 최적. 기본 8스레드는 리틀 코어까지 돌아 오히려 2배 느림.
그 외: OpenBLAS의 Bad memory unallocation! 경고는 무해. 램은 추론 중 최대 ~2.5GB로, 10GB 기기에서 여유 충분.
릴스의 86.5 decisions/sec(P50 9ms)는 애플 실리콘 + MLX 백엔드 실측이고, 폰 CPU fp32는 초당 0.4~0.6회 수준 — 자릿수 2개 차이는 순수 하드웨어·백엔드 차이. 오프라인·자기주도 추론이 목적이면 폰에서도 충분히 실전적.
setup-laya-termux.sh— 설치 명령 모음laya_test.py— 영어 체크포인트 스모크 테스트 (README 예제)laya_test_ko.py— 다국어 체크포인트 한국어 테스트COMPARISON.md— TypeSafe Jev와의 동일 입력 비교 + 재현성 함정laya_vs_jev_compare.py— 양쪽 비교 재현 스크립트