Skip to content

코드 에러 관련 #2

@ByeongjunCho

Description

@ByeongjunCho

안녕하세요. 좋은 코드 공유해 주셔서 감사합니다. 해당 코드 테스트를 해보던 중 오류가 있는 것 같아 공유드립니다.

먼저, 분석 코드를 실행하여 아래와 같은 결과를 얻었습니다.

python token_analyzer.py --model_id meta-llama/Llama-4-Maverick-17B-128E-Instruct
>>>
...
모델: meta-llama/Llama-4-Maverick-17B-128E-Instruct
분석 대상 최대 토큰 ID: 201135
분석 대상 토큰 수: 201,032
순수 영문 토큰 수: 36,668
한글 가능성 토큰 수: 64,992
완성형 한글 포함 토큰 수: 5,490
특수문자 토큰 수: 2,509
미분류 토큰 수: 97,009
uncategorized_ids 97009
len(token_list) 97009
...

그 이후 실제 토큰의 형태를 확인하기 위해 아래 코드를 실행했습니다.

# load 
# 분석된 파일 로드
with open("/home/bjcho/project/2025/Llama4-Token-Editor/token_category_analysis.json", 'r') as f:
    token_category = json.load(f)
# load tokenizer
model_id = token_category['model_id']
print(model_id)
llama4_tokenizer = transformers.AutoTokenizer.from_pretrained(model_id) 

# print examples
token_ids = token_category['token_ids']['hangul_possible']
random.shuffle(token_ids)
for idx, token_id in enumerate(token_ids):
    token_bytes = llama4_tokenizer.decode([token_id]).encode('utf-8')
    print(f"id : {token_id} --- tokens : {llama4_tokenizer.decode([token_id])}", end=' : ')
    print(token_bytes)
    
    if idx == 50:
        break

다음은 출력 일부입니다.
id : 178536 --- tokens : -β : b'-\xce\xb2'
id : 36167 --- tokens : 향 : b' \xed\x96\xa5'
id : 158281 --- tokens : Влади : b'\xd0\x92\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb8'
id : 155671 --- tokens : костей : b' \xd0\xba\xd0\xbe\xd1\x81\xd1\x82\xd0\xb5\xd0\xb9'
id : 106985 --- tokens : подвод : b' \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xb2\xd0\xbe\xd0\xb4'
id : 82125 --- tokens : 時の : b'\xe6\x99\x82\xe3\x81\xae'
id : 156386 --- tokens : തിന : b'\xe0\xb4\xa4\xe0\xb4\xbf\xe0\xb4\xa8'
id : 179480 --- tokens : μαι : b'\xce\xbc\xce\xb1\xce\xb9'
id : 22608 --- tokens : ", : b'\xe2\x80\x9d\xef\xbc\x8c'
id : 156258 --- tokens : швей : b' \xd1\x88\xd0\xb2\xd0\xb5\xd0\xb9'
id : 38638 --- tokens : 증가 : b' \xec\xa6\x9d\xea\xb0\x80'
id : 195743 --- tokens : 안은 : b'\xec\x95\x88\xec\x9d\x80'
id : 169098 --- tokens : 怪物 : b'\xe6\x80\xaa\xe7\x89\xa9'
id : 177690 --- tokens : meş : b' me\xc5\x9f'
id : 112691 --- tokens : мышления : b' \xd0\xbc\xd1\x8b\xd1\x88\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f'
...

예시와 같이 한글 가능성이 없는 토큰이 'hangul_possible' 에 추가되는 것으로 보입니다.

특정 예시에 대해 확인해 보면,

token_id = 169098
tokens = llama4_tokenizer.decode([token_id])
token_bytes = llama4_tokenizer.decode([token_id]).encode('utf-8')
print(f"{tokens} - {token_bytes}")
>>> 怪物 - b'\xe6\x80\xaa\xe7\x89\xa9'

위 token_id를 사용하여 한글 가능성 체크(token_analyzer.py 일부)를 수행하면

# 한글 가능성 체크
for i in range(len(token_bytes)):
    remaining_sequence = token_bytes[i:]
    print(can_be_hangul_utf8(remaining_sequence))
>>>
False
False
False
False
True # 여기서 한글가능성 True가 되어 저장
True

과 같이 한글 가능성이 없어보이는 토큰이 함수 실행 결과 True 가 return되는것이 확인됩니다.

여기서 문제가 발생하는 것으로 보입니다.

감사합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions