← 목록
기타 2026-06-13 4KB 읽기 3분

트릿텐서 v0.2 — 평면 멀티블록 전환 (행열>1023 지원)

개요

/Users/ef/crowny-butler/libs/트릿텐서.한선 의 평면(평면P/평면N)이 단일 배열이라 행열 ≤ 1023(VM 배열 상한)에서만 동작하던 제한을 해소. 거대SLM 어휘 임베딩 행렬(어휘수×27)·긴 컨텍스트 KV 풀을 위한 멀티블록 설계로 전환.

변경 요지

내부 표현 변경 (외부 서명 100% 보존)

  • : 텐서맵에 "평면P"/"평면N" 단일 배열 (행열 ≤ 1023 한계)
  • : 텐서맵에 "평면P_b0","평면P_b1",... + "평면N_b0","평면N_b1",... 블록 배열
+ "행per블록", "블록수" 메타 키

새 멀티블록 표현 명세

  • 블록상한: 1000 슬롯 (텐서_블록상한)
  • 행per블록 계산: loop로 정확 (나눗셈 자연반올림 함정 회피)
  결과=0; 동안 ((결과+1)*열 <= 1000) { 결과++ }
  
열=27이면 행per블록=37 (37×27=999≤1000)
  • 블록수 계산: loop 올림 계산 (나눗셈 회피)
  누적행=0; 동안 (누적행 < 행) { 누적행+=행per블록; 블록수++ }
  
  • 한 행은 한 블록 안에 완전히 들어감 (행 비스팬 보장)

신규 헬퍼: 텐서_블록위치(텐서, 행번호, 열번호) → 맵{블록, 오프셋}

  • 블록 번호: loop로 구함 (나눗셈 회피)
  • 블록내행 = 행번호 - 블록 행per블록
  • 오프셋 = 블록내행 * 열 + 열번호

저장/로드 형식 변경

  • : 경로접두.P.s{n}.dat / 경로접두.Q.s{n}.dat + meta "행,열,P샤드수,N샤드수"
  • : 경로접두.P.b{b}.dat / 경로접두.Q.b{b}.dat + meta "행,열,행per블록,블록수"
각 블록 ≤1000정수 → 최대~5KB < 12KB 한계 안전

텐서_색인 처리

  • 외부 모듈 grep 결과: 심층삼진망/거대SLM통합/사상인지 어느 파일도 텐서_색인을 직접 호출하지 않음
  • 텐서_색인 함수는 내부에서도 더 이상 직접 쓰이지 않고 텐서_블록위치에 위임
  • 하위 호환을 위해 함수 정의는 보존 (전역 선형 색인 정보 조회 용도)

핫패스 최적화 보존

  • 텐서_행벡터/텐서_행설정: 한 행은 한 블록 안에 있으므로 블록 배열 1회만 꺼내 처리 (v0.1과 동일한 O(열) 비용)

변경 파일

파일변경
/Users/ef/crowny-butler/libs/트릿텐서.한선v0.2 멀티블록 전환 (주 구현)
/Users/ef/crowny-butler/libs/트릿텐서.rpn.한선RPN 동반 파일 동기화
/Users/ef/crowny-butler/libs/텐서덤프도구.한선.P.b{b}.dat 형식 + meta 필드 업데이트
/Users/ef/crowny-butler/libs/텐서덤프도구.rpn.한선RPN 동반 파일 동기화

외부 모듈 영향 (grep 결과)

  • 심층삼진망.한선: 텐서_생성/텐서_시드채움/텐서_행벡터/텐서_도트/텐서_행설정 사용 — 모두 공개 서명 보존, 영향 없음
  • 거대SLM통합.한선: 트릿텐서를 전이적으로 사용 (심층삼진망 통해) — 영향 없음
  • 사상인지.한선: 텐서 함수 직접 미사용 — 영향 없음
  • 텐서덤프도구.한선: 파일 포맷 직접 읽음 → v0.2 형식으로 업데이트 완료

데모 케이스

  1. 27×27 (729셀, 단일블록 — 행per블록=37≥27)
  2. 100×27 (2700셀, 멀티블록 3개 — 블록 경계 행 36,37,73,74 강제검증)
  3. 50×50 (2500셀, 멀티블록)
  4. 도트곱 (행벡터 인터페이스 무변경)

남은 위험

  • 텐서덤프도구.rpn.한선의 일부 RPN 레이블 분기 구조가 hanseonc_std로 컴파일 시 레이블 순서 충돌 가능성 있음 → 메인 세션 검증 필요
  • 텐서_시드채움은 행별 텐서_설정트릿을 호출하므로 대규모(예: 10000×27) 텐서 채움 시 느림 — 텐서_행설정 배치 패턴으로 대체 추천
  • 맵 ~729 엔트리 상한: 블록수가 많아지면 블록 키("평면P_b0"..."평면P_b364") 총 키가 ~730개에 도달 → 블록수 ≤ 364 제한 (행per블록=37, 열=27이면 최대 행수 ≈ 13468행 = 363891셀까지 안전)