가장 만만한(?) 데이터 셋인 것 같은데

DAGM 데이터셋은 총 10가지 도메인의 데이터로 구성되어 있으며, 모델링을 통해 가상으로 결함을 합성하여 만든 데이터셋입니다. NanoTWICE 데이터셋은 nanofibrous material 데이터이며 5장의 정상 데이터와 40장의 결함 데이터로 구성이 되어있습니다

자, 이제 오늘의 본론인 MVTec-AD 데이터셋에 대해 설명드리겠습니다. 앞서 설명드렸던 DAGM, NanoTWICE의 아쉬웠던 부분들을 개선하며 총 15종류의 도메인의 데이터셋을 구축하였습니다. 크게는 Texture와 Object로 구분을 하였고, 각각 5가지, 10가지 종류의 도메인 데이터로 구성이 되어있습니다

[링크 : https://hoya012.github.io/blog/MVTec-AD/]

 

5.3 GB(!!)

[링크 : https://www.kaggle.com/datasets/ipythonx/mvtec-ad]

[링크 : https://www.mvtec.com/research-teaching/datasets/mvtec-ad]

[링크 : https://huggingface.co/datasets/Voxel51/mvtec-ad]

 

5.9 GB(!!!)

[링크 : https://www.kaggle.com/datasets/mhskjelvareid/dagm-2007-competition-dataset-optical-inspection]

[링크 : https://github.com/M-3LAB/awesome-industrial-anomaly-detection]

Posted by 구차니
Programming/qt2026. 5. 20. 12:17

antigravity 가지고 물어보니 이거 하나 넣으라니 정말 되네.

 

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    setAttribute(Qt::WA_StyledBackground);
}

 

 

Qt::WA_StyledBackground 93 Indicates the widget should be drawn using a styled background.

[링크 : https://doc.qt.io/qt-6/qt.html]

[링크 : https://runebook.dev/ko/docs/qt/stylesheet-reference]

 

QWidget은 원래 배경 색상만 지원하도록 만든 클래스인가 보네..

[링크 : https://doc.qt.io/qt-6/stylesheet-reference.html]

'Programming > qt' 카테고리의 다른 글

QT 런타임중 언어 변경  (0) 2026.05.14
QT QMainWindow, QWidget, QDialog  (0) 2026.05.14
QT 창관리  (0) 2026.05.13
QString arg()  (0) 2026.05.13
qt 동적 크기  (0) 2026.05.12
Posted by 구차니

'프로그램 사용 > ai 프로그램' 카테고리의 다른 글

comfyui 실행  (0) 2026.05.19
llama.cpp kv quantization  (0) 2026.05.19
openai api  (0) 2026.05.18
RAG 시도 - postgresql(14) + pgvector  (1) 2026.05.15
gpt님 만세! - pip torch 버전 낮추기  (0) 2026.05.15
Posted by 구차니

 

/mnt/Downloads/ComfyUI$ python3 main.py --listen 0.0.0.0
setup plugin alembic.autogenerate.schemas
setup plugin alembic.autogenerate.tables
setup plugin alembic.autogenerate.types
setup plugin alembic.autogenerate.constraints
setup plugin alembic.autogenerate.defaults
setup plugin alembic.autogenerate.comments
WARNING: You need pytorch with cu130 or higher to use optimized CUDA operations.
Found comfy_kitchen backend triton: {'available': True, 'disabled': True, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8']}
Found comfy_kitchen backend cuda: {'available': True, 'disabled': True, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_nvfp4']}
Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_mxfp8', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_mxfp8', 'scaled_mm_nvfp4']}
Checkpoint files will always be loaded safely.
Total VRAM 11165 MB, total RAM 15651 MB
pytorch version: 2.7.1+cu118
Set vram state to: NORMAL_VRAM
Device: cuda:0 NVIDIA GeForce GTX 1080 Ti : cudaMallocAsync
Using async weight offloading with 2 streams
Enabled pinned memory 14085.0
Using pytorch attention
Unsupported Pytorch detected. DynamicVRAM support requires Pytorch version 2.8 or later. Falling back to legacy ModelPatcher. VRAM estimates may be unreliable especially on WindowsPython version: 3.10.12 (main, Mar  3 2026, 11:56:32) [GCC 11.4.0]
ComfyUI version: 0.21.1
comfy-aimdo version: 0.3.0
comfy-kitchen version: 0.2.8
comfyui-frontend-package version: 1.43.18
comfyui-workflow-templates version: 0.9.77
comfyui-embedded-docs version: 0.5.0
comfy-kitchen version: 0.2.8
comfy-aimdo version: 0.3.0
[Prompt Server] web root: /home/minimonk/.local/lib/python3.10/site-packages/comfyui_frontend_package/static
Asset seeder disabled

Import times for custom nodes:
   0.0 seconds: /mnt/Downloads/ComfyUI/custom_nodes/websocket_image_save.py

Context impl SQLiteImpl.
Will assume non-transactional DDL.
Starting server

To see the GUI go to: http://0.0.0.0:8188
^C
Stopped server

 

그냥 켜면 기본으로 있는데

몰라서(!) ComfyUI/models/diffusion_models 에 *.safetensors 파일들을 넣어놓고는 체크포인트 로드에 왜 안뜨나 했는데

ComfyUI/models/checkpoints 에 넣어주고 리프레시 하면 뜬다.

[링크 : https://comfyui-wiki.com/ko/comfyui-nodes/loaders/checkpoint-loader-simple]

 

선이 먼가 드럽게 꼬여서

 

정리 하는데. 도대체 저 하나하나 노드들을 멀로 추가해야하나 모르겠다.

 

걍 CLIP 부분 드래그 해서 오니 추천으로 "CLIP 테스트 인코딩 (프롬프트)" 가 뜨니

우클릭해서 먼지 찾을 필요가 없을 듯?

 

굳이.. 하겠다면

노드 추가 - 조건화 - CLIP 텍스트 인코딩 (프롬프트) 로 하면 될 것같은데

CLIP이 먼지 찾아봐야겠다.

 

+

[링크 : https://youngri.tistory.com/m/40/] api 서버?

[링크 : https://m.blog.naver.com/minwoo932/224142522248]

[링크 : https://comfyui-wiki.com/ko/tutorial/basic/creating-your-first-image-by-the-first-time]

 

'프로그램 사용 > ai 프로그램' 카테고리의 다른 글

wan2.2 + comfyui  (0) 2026.05.19
llama.cpp kv quantization  (0) 2026.05.19
openai api  (0) 2026.05.18
RAG 시도 - postgresql(14) + pgvector  (1) 2026.05.15
gpt님 만세! - pip torch 버전 낮추기  (0) 2026.05.15
Posted by 구차니

비정상을 학습시키는게 아니라

정상만 학습시키고 정상에서 벗어나는 것을 탐지하는 기법

 

PaDiM

Ganomaly (GAN + Anomaly Detection)

[링크 : https://actionpower.medium.com/액션파워-lab-이미지에서-이상-영역-탐지-visual-anomaly-detection-는-어떻게-할까-6da65866366b]

 

PaDiM-Lite / PatchCore-Lite

[링크 : https://www.alphaxiv.org/ko/overview/2603.20288v1]

 

PaDiM (Patch Ditrubution Modeling)

[링크 : https://huggingface.co/papers/2011.08785]

[링크 : https://data-analysis-expertise.tistory.com/128]

[링크 : https://dippingtodeepening.tistory.com/110]

[링크 : https://cumulu-s.tistory.com/44]

 

VAD - Visual Anomaly Detection

MVTec-AD, MVTec-3D, MVTec-LOCO, VisA  데이터 셋

[링크 : https://velog.io/@barley_15/논문-리뷰-A-Survey-on-Visual-Anomaly-Detection-Challenge-Approach-and-Prospect]

 

PatchCore

[링크 : https://velog.io/@ljwljy51/PatchCore-Paper-Review]

 

PatchCore

SPADE , PaDiM

[링크 : https://ffighting.net/deep-learning-paper-review/anomaly-detection/patchcore/]

'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

MVTec AD 데이터 셋  (0) 2026.05.20
NCHW, NHWC  (0) 2026.05.06
품질 관리 체크리스트 - p0 p1 p2 p3?  (0) 2026.04.23
asus 메인보드 에러코드(q code)와 부팅절차  (0) 2026.04.20
intel hex 포맷  (0) 2026.03.24
Posted by 구차니
프로그램 사용/octave2026. 5. 19. 16:19

귀찮으니(!) gpt를 통해서 딸깍~ 시전

% 이미지 읽기
img = imread("test.jpg");

% RGB -> grayscale 직접 변환
if ndims(img) == 3

    r = double(img(:,:,1));
    g = double(img(:,:,2));
    b = double(img(:,:,3));

    gray = 0.299*r + 0.587*g + 0.114*b;
else
    gray = double(img);
end

% 블럭 크기
blockSize = 32;

[h, w] = size(gray);

% 결과 저장
scoreMap = zeros(floor(h/blockSize), floor(w/blockSize));

% 블럭별 FFT 처리
for by = 1:blockSize:(h - blockSize + 1)
    for bx = 1:blockSize:(w - blockSize + 1)

        % 블럭 추출
        block = gray(by:by+blockSize-1, bx:bx+blockSize-1);

        % 평균 제거
        block = block - mean(block(:));

        % FFT
        F = fft2(block);

        % magnitude
        mag = abs(F);

        % 중앙 이동
        mag = fftshift(mag);

        center = floor(blockSize/2) + 1;

        radius = 4;

        [X, Y] = meshgrid(1:blockSize, 1:blockSize);

        dist = sqrt((X-center).^2 + (Y-center).^2);

        % 고주파만 사용
        mask = dist > radius;

        % 고주파 에너지
        energy = sum(mag(mask).^2);

        % diversity score
        score = log(1 + energy);

        iy = (by-1)/blockSize + 1;
        ix = (bx-1)/blockSize + 1;

        scoreMap(iy, ix) = score;
    end
end

% 정규화
scoreMap = scoreMap - min(scoreMap(:));
scoreMap = scoreMap / max(scoreMap(:));

% 결과 표시
figure;
imshow(uint8(gray));
title("Original");

figure;
imagesc(scoreMap);
axis image;
colorbar;
title("FFT Diversity Map");

 

원본

그레이스케일

 

원인은 모르겠으나 blocksize 5 이하로는 검은색으로 나온다.

 

blocksize = 6 blocksize = 8 blocksize = 10
blocksize = 12 blocksize = 16 blocksize = 32

 

원본

 

그레이스케일

 

blocksize = 6 blocksize = 10 blocksize = 12

blocksize = 16 blocksize = 18 blocksize = 20
blocksize = 24 blocksize = 28 blocksize = 32

 

이미지 폭이 큰 차이가 없어서 그런진 모르겠지만..

blocksize 10~12 정도가 가장 무난한 것 같다.

 

rgb에 대해서 각각 처리 후 합산인데 눈에 보이는건 크게 달라 보이진 않았는데

img = imread("test.jpg");

img = double(img);

blockSize = 32;

[h, w, c] = size(img);

scoreMap = zeros(floor(h/blockSize), floor(w/blockSize));

for by = 1:blockSize:(h - blockSize + 1)
    for bx = 1:blockSize:(w - blockSize + 1)

        totalEnergy = 0;

        % RGB 각각 처리
        for ch = 1:3

            block = img(by:by+blockSize-1, ...
                        bx:bx+blockSize-1, ch);

            block = block - mean(block(:));

            F = fft2(block);

            mag = abs(fftshift(F));

            center = floor(blockSize/2) + 1;

            radius = 4;

            [X, Y] = meshgrid(1:blockSize, 1:blockSize);

            dist = sqrt((X-center).^2 + (Y-center).^2);

            mask = dist > radius;

            energy = sum(mag(mask).^2);

            totalEnergy = totalEnergy + energy;
        end

        score = log(1 + totalEnergy);

        iy = (by-1)/blockSize + 1;
        ix = (bx-1)/blockSize + 1;

        scoreMap(iy, ix) = score;
    end
end

scoreMap = scoreMap - min(scoreMap(:));
scoreMap = scoreMap / max(scoreMap(:));

figure;
imshow(uint8(img));

figure;
imagesc(scoreMap);
axis image;
colorbar;
title("RGB FFT Diversity");

 

blocksize = 10

 

두개를 비교해보면 하단에 파란색 마트 정도는 좀 더 잘 보이는 차이가 있는데

처리 시간대비로는 그리 큰 효과를 얻긴 힘들지도 모르겠다.

grayscale rgb 각각 처리후 합산

 

 LAB 으로 전환해서 색상에 대해서 처리, blocksize = 10

% ==========================================
% LAB 기반 Fabric Diversity / Anomaly Map
% ==========================================

img = imread("test.jpg");

img = double(img) / 255.0;

%------------------------------------------
% RGB -> LAB 변환
%------------------------------------------

% sRGB gamma correction 제거
mask = img <= 0.04045;

img_linear = zeros(size(img));

img_linear(mask) = img(mask) / 12.92;
img_linear(~mask) = ((img(~mask)+0.055)/1.055).^2.4;

% RGB -> XYZ
M = [ ...
    0.4124564 0.3575761 0.1804375;
    0.2126729 0.7151522 0.0721750;
    0.0193339 0.1191920 0.9503041];

[h, w, ~] = size(img);

rgb_reshaped = reshape(img_linear, [], 3);

xyz = rgb_reshaped * M';

X = xyz(:,1) / 0.95047;
Y = xyz(:,2);
Z = xyz(:,3) / 1.08883;

% XYZ -> LAB helper
f = @(t) ((t > 0.008856).*t.^(1/3) + ...
         (t <= 0.008856).*(7.787*t + 16/116));

fx = f(X);
fy = f(Y);
fz = f(Z);

L = 116*fy - 16;
A = 500*(fx - fy);
B = 200*(fy - fz);

lab = zeros(h, w, 3);

lab(:,:,1) = reshape(L, h, w);
lab(:,:,2) = reshape(A, h, w);
lab(:,:,3) = reshape(B, h, w);

%------------------------------------------
% FFT Block Analysis
%------------------------------------------

blockSize = 32;
step = 16;   % overlap sliding

outH = floor((h - blockSize)/step) + 1;
outW = floor((w - blockSize)/step) + 1;

scoreMap = zeros(outH, outW);

% FFT mask 생성
center = floor(blockSize/2) + 1;

[Xm, Ym] = meshgrid(1:blockSize, 1:blockSize);

dist = sqrt((Xm-center).^2 + (Ym-center).^2);

radius = 4;

highMask = dist > radius;

%------------------------------------------
% Sliding Window
%------------------------------------------

oy = 1;

for by = 1:step:(h - blockSize + 1)

    ox = 1;

    for bx = 1:step:(w - blockSize + 1)

        totalEnergy = 0;

        % LAB 각 채널 FFT
        for ch = 1:3

            block = lab( ...
                by:by+blockSize-1, ...
                bx:bx+blockSize-1, ...
                ch);

            % 평균 제거
            block = block - mean(block(:));

            % FFT
            F = fft2(block);

            mag = abs(fftshift(F));

            % 고주파 에너지
            energy = sum(mag(highMask).^2);

            totalEnergy = totalEnergy + energy;
        end

        % 로그 스케일
        score = log(1 + totalEnergy);

        scoreMap(oy, ox) = score;

        ox = ox + 1;
    end

    oy = oy + 1;
end

%------------------------------------------
% Normalize
%------------------------------------------

scoreMap = scoreMap - min(scoreMap(:));
scoreMap = scoreMap / max(scoreMap(:));

%------------------------------------------
% Display
%------------------------------------------

figure;
imagesc(img);
axis image;
title("Original");

figure;
imagesc(scoreMap);
axis image;
colorbar;
title("LAB FFT Diversity / Anomaly Map");

 

block 10, step 16

 

block 10, step 10

 

rgb 각각 처리후 합산 RGB->LAB, 색상만 처리

'프로그램 사용 > octave' 카테고리의 다른 글

octave - pkg load image  (0) 2026.05.19
octave csv에서 읽어들이기  (0) 2024.11.26
octave audioread wav  (0) 2023.07.12
공짜 matlab? octave  (0) 2015.11.05
Posted by 구차니
프로그램 사용/octave2026. 5. 19. 16:08

이미지 팩(?) 쓰려는데 에러가 나서 찾아보니 패키지 설치하란다. 

>> pkg load image;
error: package image is not installed
error: called from
    load_packages at line 47 column 7
    pkg at line 623 column 7
>>

 

멀 이렇게 많이 깔어.. -_-

$ sudo apt install octave-image
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
다음의 추가 패키지가 설치될 것입니다 :
  default-jre-headless epstool fonts-freefont-otf libbtf1 libcombblas1.16.0
  libcxsparse3 libemf1 libfftw3-mpi3 libfltk-gl1.3 libfltk1.3 libglpk40
  libgraphicsmagick++-q16-12 libgraphicsmagick-q16-3 libhypre-2.22.1 libklu1
  libmumps-5.4 libpetsc-real3.15 libplot2c2 libpstoedit0c2a libptscotch-6.1
  libqhull8.0 libqrupdate1 libqscintilla2-qt5-15 libqscintilla2-qt5-l10n
  libscalapack-openmpi2.1 libscotch-6.1 libsundials-ida4
  libsundials-nvecparallel-petsc4 libsundials-nvecserial4
  libsundials-sunlinsol2 libsundials-sunmatrix2 libsuperlu-dist7
  libtrilinos-amesos-13.2 libtrilinos-aztecoo-13.2 libtrilinos-epetra-13.2
  libtrilinos-epetraext-13.2 libtrilinos-galeri-13.2 libtrilinos-ifpack-13.2
  libtrilinos-kokkos-13.2 libtrilinos-ml-13.2 libtrilinos-teuchos-13.2
  libtrilinos-trilinosss-13.2 libtrilinos-triutils-13.2
  libtrilinos-zoltan-13.2 mpi-default-bin octave octave-common octave-doc
  openmpi-bin openmpi-common pstoedit
제안하는 패키지:
  default-jre libfftw3-mpi-dev libiodbc2-dev default-libmysqlclient-dev
  graphicsmagick-dbg libqscintilla2-doc scalapack-doc octave-dev gfortran
  | fortran-compiler
다음 새 패키지를 설치할 것입니다:
  default-jre-headless epstool fonts-freefont-otf libbtf1 libcombblas1.16.0
  libcxsparse3 libemf1 libfftw3-mpi3 libfltk-gl1.3 libfltk1.3 libglpk40
  libgraphicsmagick++-q16-12 libgraphicsmagick-q16-3 libhypre-2.22.1 libklu1
  libmumps-5.4 libpetsc-real3.15 libplot2c2 libpstoedit0c2a libptscotch-6.1
  libqhull8.0 libqrupdate1 libqscintilla2-qt5-15 libqscintilla2-qt5-l10n
  libscalapack-openmpi2.1 libscotch-6.1 libsundials-ida4
  libsundials-nvecparallel-petsc4 libsundials-nvecserial4
  libsundials-sunlinsol2 libsundials-sunmatrix2 libsuperlu-dist7
  libtrilinos-amesos-13.2 libtrilinos-aztecoo-13.2 libtrilinos-epetra-13.2
  libtrilinos-epetraext-13.2 libtrilinos-galeri-13.2 libtrilinos-ifpack-13.2
  libtrilinos-kokkos-13.2 libtrilinos-ml-13.2 libtrilinos-teuchos-13.2
  libtrilinos-trilinosss-13.2 libtrilinos-triutils-13.2
  libtrilinos-zoltan-13.2 mpi-default-bin octave octave-common octave-doc
  octave-image openmpi-bin openmpi-common pstoedit
0개 업그레이드, 52개 새로 설치, 0개 제거 및 9개 업그레이드 안 함.
49.9 M바이트 아카이브를 받아야 합니다.
이 작업 후 171 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 

 

엥.. 패키지 깔고 나니 octave 아이콘이 하나 더 생기고 실행해보니, 7.1.0 과 6.4.0 두개가 생겼다.

 

7.1.0 에서는 여전히 에러가 나는데

6.4.0 에서는 잘 된다. 머냐..? 버전 가리냐?

'프로그램 사용 > octave' 카테고리의 다른 글

octave로 공간 fft 돌려보기  (0) 2026.05.19
octave csv에서 읽어들이기  (0) 2024.11.26
octave audioread wav  (0) 2023.07.12
공짜 matlab? octave  (0) 2015.11.05
Posted by 구차니

128k context length에 2기가 VRAM을 냠냠

$ ./llama-b8925/llama-cli -m model/gemma4-e4b/gemma-4-E4B-it-Q4_K_M.gguf  --verbose
llama_kv_cache: size = 2048.00 MiB (131072 cells,   4 layers,  1/1 seqs), K (f16): 1024.00 MiB, V (f16): 1024.00 MiB
llama_kv_cache: attn_rot_k = 0, n_embd_head_k_all = 512
llama_kv_cache: attn_rot_v = 0, n_embd_head_k_all = 512
llama_kv_cache_iswa: creating     SWA KV cache, size = 1024 cells

 

k 만 q4로 하니 288MB! 256MB 보단 약간 큰데 아무튼 대충~ 1/4 로 줄었다.

$ ./llama-b8925/llama-cli -m model/gemma4-e4b/gemma-4-E4B-it-Q4_K_M.gguf  --verbose -ctk q4_0 --ctx-size 131072
llama_kv_cache: size = 1312.00 MiB (131072 cells,   4 layers,  1/1 seqs), K (q4_0):  288.00 MiB, V (f16): 1024.00 MiB
llama_kv_cache: attn_rot_k = 1, n_embd_head_k_all = 512
llama_kv_cache: attn_rot_v = 0, n_embd_head_k_all = 512
llama_kv_cache_iswa: creating     SWA KV cache, size = 1024 cells

 

kv를 q4로 하니 대충 512MB 근처.

$ ./llama-b8925/llama-cli -m model/gemma4-e4b/gemma-4-E4B-it-Q4_K_M.gguf  --verbose -ctk q4_0 -ctv q4_0 --ctx-size 131072
llama_kv_cache: size =  576.00 MiB (131072 cells,   4 layers,  1/1 seqs), K (q4_0):  288.00 MiB, V (q4_0):  288.00 MiB
llama_kv_cache: attn_rot_k = 1, n_embd_head_k_all = 512
llama_kv_cache: attn_rot_v = 1, n_embd_head_k_all = 512
llama_kv_cache_iswa: creating     SWA KV cache, size = 1024 cells

'프로그램 사용 > ai 프로그램' 카테고리의 다른 글

wan2.2 + comfyui  (0) 2026.05.19
comfyui 실행  (0) 2026.05.19
openai api  (0) 2026.05.18
RAG 시도 - postgresql(14) + pgvector  (1) 2026.05.15
gpt님 만세! - pip torch 버전 낮추기  (0) 2026.05.15
Posted by 구차니

 

[링크 : https://velog.io/@euisuk-chung/%EC%A0%95%EB%A6%AC-OpenAI-API-Document]

[링크 : https://developers.openai.com/api/reference/resources/responses]

[링크 : https://developers.openai.com/api/docs/guides/text]

[링크 : https://model-spec.openai.com/2025-02-12.html#chain_of_command]

 

 

 

 

claude에 물어보니 openai 의 api가 랩핑한것일뿐

결국에는 신경망에 특수 토큰으로 인식될 만한 녀석으로 감싸고 그걸 임베딩 해서 벡터로 넣어줄 뿐

무언가(?) 대단한 방법으로 들어가는건 아니라고 한다. imagenary monologue 줄여서 im prefix

 

다른 모델과의 비교

모델블록 시작블록 끝방식
ChatML (Qwen, Hermes) <|im_start|>role <|im_end|> 범용 role 삽입
LLaMA-3 <|start_header_id|>role<|end_header_id|> <|eot_id|> 헤더 분리
LLaMA-2 [INST] [/INST] role 구분 없음
Mistral [INST] [/INST] role 구분 없음
DeepSeek-R1 <|User|> / <|Assistant|> <|end▁of▁sentence|> role별 고정 토큰


[링크 :
https://claude.ai/share/0bfc9c76-e5a8-46d2-8346-4f84170625db]

 

#define CHATML_TEMPLATE_SRC                                                               \
    "{%- for message in messages -%}\n"                                                   \
    "  {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>\n' -}}\n" \
    "{%- endfor -%}\n"                                                                    \
    "{%- if add_generation_prompt -%}\n"                                                  \
    "  {{- '<|im_start|>assistant\n' -}}\n"                                               \
    "{%- endif -%}"
    
    const std::string TOOL_CALL_START = "<|tool_call_start|>";
    const std::string TOOL_CALL_END   = "<|tool_call_end|>";
    const std::string THINK_START     = "<think>";
    const std::string THINK_END       = "</think>";
    const std::string GEN_PROMPT      = "<|im_start|>assistant\n";    

[링크 : https://github.com/ggml-org/llama.cpp/blob/master/common/chat.cpp#L567]

 

음.. gemma4-e4b 에서는 im_start가 특수 토큰으로 배우진 않은듯?

/mnt/Downloads/model/gemma4-e4b$ ../../llama-b8925/llama-tokenize -m gemma-4-E4B-it-Q4_K_M.gguf -p "<|im_start|>system" --log-disable
     2 -> '<bos>'
236820 -> '<'
236909 -> '|'
   548 -> 'im'
236779 -> '_'
  3041 -> 'start'
111038 -> '|>'
  9731 -> 'system'

/mnt/Downloads/model/gemma4-e4b$ ../../llama-b8925/llama-tokenize -m gemma-4-E4B-it-Q4_K_M.gguf -p "<|im_start|>system" --log-disable  --no-parse-special
     2 -> '<bos>'
236820 -> '<'
236909 -> '|'
   548 -> 'im'
236779 -> '_'
  3041 -> 'start'
111038 -> '|>'
  9731 -> 'system'

/mnt/Downloads/model/gemma4-e4b$ ../../llama-b8925/llama-tokenize -m gemma-4-E4B-it-Q4_K_M.gguf -p "<|im_start|>system" --log-disable  --no-parse-special --ids
[2, 236820, 236909, 548, 236779, 3041, 111038, 9731]

 

+

모델 읽어들이다가 발견 한 특수 토큰..?

일단은 control token 이라고 나온다.

$ ./llama-b8925/llama-cli -m model/gemma4-e4b/gemma-4-E4B-it-Q4_K_M.gguf  --verbose
load: control token: 258884 '<|video|>' is not marked as EOG
load: control token: 255999 '<|image>' is not marked as EOG
load: control token: 258882 '<image|>' is not marked as EOG
load: control token: 258883 '<audio|>' is not marked as EOG
load: control token:     98 '<|think|>' is not marked as EOG
load: control token:    105 '<|turn>' is not marked as EOG
load: control token: 258880 '<|image|>' is not marked as EOG
load: control token:      2 '<bos>' is not marked as EOG
load: control-looking token:    212 '</s>' was not control-type; this is probably a bug in the model. its type will be overridden
load: control token:      0 '<pad>' is not marked as EOG
load: control-looking token:     50 '<|tool_response>' was not control-type; this is probably a bug in the model. its type will be overridden
load: control token:     46 '<|tool>' is not marked as EOG
load: control token:     47 '<tool|>' is not marked as EOG
load: control token: 256000 '<|audio>' is not marked as EOG
load: control token:      3 '<unk>' is not marked as EOG
load: control token: 258881 '<|audio|>' is not marked as EOG
load: control-looking token:      1 '<eos>' was not control-type; this is probably a bug in the model. its type will be overridden
load: control token:      4 '<mask>' is not marked as EOG
|load: printing all EOG tokens:
load:   - 1 ('<eos>')
load:   - 50 ('<|tool_response>')
load:   - 106 ('<turn|>')
load:   - 212 ('</s>')
load: special_eog_ids contains '<|tool_response>', removing '</s>' token from EOG list


print_info: BOS token             = 2 '<bos>'
print_info: EOS token             = 106 '<turn|>'
print_info: UNK token             = 3 '<unk>'
print_info: PAD token             = 0 '<pad>'
print_info: MASK token            = 4 '<mask>'
print_info: LF token              = 107 '
'
print_info: EOG token             = 1 '<eos>'
print_info: EOG token             = 50 '<|tool_response>'
print_info: EOG token             = 106 '<turn|>'
print_info: max token length      = 93


init: chat template, example_format: '<|turn>system
<|think|>
You are a helpful assistant<turn|>
<|turn>user
Hello<turn|>
<|turn>model
Hi there<turn|>
<|turn>user
How are you?<turn|>
<|turn>model
'
srv          init: init: chat template, thinking = 1

'프로그램 사용 > ai 프로그램' 카테고리의 다른 글

comfyui 실행  (0) 2026.05.19
llama.cpp kv quantization  (0) 2026.05.19
RAG 시도 - postgresql(14) + pgvector  (1) 2026.05.15
gpt님 만세! - pip torch 버전 낮추기  (0) 2026.05.15
wan2.2  (0) 2026.05.13
Posted by 구차니
개소리 왈왈/블로그2026. 5. 18. 10:14

또 소멸할 해피빈이 생겨나서 6900원 기부

 

'개소리 왈왈 > 블로그' 카테고리의 다른 글

블로그 방문자  (0) 2026.05.05
어우 겨우겨우 동영상 백업 완료  (0) 2026.03.05
카카오 TV 서비스 종료  (0) 2026.03.05
뭐여? (티스토리 동영상 백업중)  (2) 2026.03.02
해피빈 기부  (0) 2026.02.19
Posted by 구차니