Given this PGN string of a chess game:
1. b3 e5 2. Nf3 h5 3. d4 exd4 4. Nxd4 Nf6 5. f4 Ke7 6. Qd3 d5 7. h4 *
Figure out the current state of the chessboard, create an image in SVG code, also highlight the last move.
모델이 다음을 수행할 수 있는지 확인하고 싶었습니다:
각 수 이후의 보드 상태를 추적하여 최종 상태(7수 전반부)에 도달할 수 있는가
보드의 올바른 SVG 이미지를 생성하고, 기물을 정확하게 배치하며, 마지막 수를 강조할 수 있는가
그리고 혹시 의문이 드실까 봐 말씀드리자면, 모델이 기존 체스 게임으로 학습되었을 가능성이 있기 때문에, 300 엘로(elo) 이상의 플레이어라면 절대 두지 않을 법한 무작위 수를 생각해냈습니다.
체스를 잘 모르시는 분들을 위해, 7. h4 이후 보드가 어떻게 보여야 하는지 알려드립니다. 참고로, 이건 Lichess 스크린샷일 뿐이니 이미지 품질이 아니라 기물 위치와 보드 방향을 확인해 주세요.
다른 모델들도 해결할 수 있을까?
본론으로 들어가기 전에, 다른 모델들의 결과를 보여드리겠습니다. 보드 상태를 파악하는 것조차 제대로 못 하고, 렌더링은 더더욱 안 되는 모델이 많다는 점이 흥미로웠습니다.
Qwen 3.5 27B
기물의 최종 위치는 거의 파악했지만, 여전히 원래 보드 상태를 위에 렌더링했습니다. 잘못된 칸을 강조했고, 보드 방향도 틀렸습니다.
Gemma 4 31B
멋진 체스닷컴 스타일의 보드네요. 보드 상태는 파악한 것 같지만, 제대로 렌더링하는 데는 실패했습니다. 칸 패턴도 엉망입니다.
Qwen3 Coder Next
뭐라고 할 말이 없네요, 꽤 실망스럽습니다.
Qwen3.6 35B A3B
예상대로 35B는 항상 가장 빠른 Qwen 모델이지만, 동시에 여러 가지 방식으로 성공적으로 실패했습니다. 제가 27B를 16GB 카드에 구겨 넣을 방법을 찾기로 한 이유입니다. 속도만으로는 가치가 없으니까요.
BF16 버전은 OpenRouter에서 가져왔고, Q8에서 Q4_K_XL 버전까지는 L40S 서버에서, 나머지는 제 RTX 5060 Ti에서 테스트했습니다.
SVG 코드는 도구나 MCP 활성화 없이 Llama.cpp Web UI에서 직접 생성되었습니다(원래 Pi 에이전트에서 이 테스트를 실행했는데, 모델이 상위 폴더를 엿보고 기존의 고용량 양자화 SVG 다이어그램을 찾아내서 대부분 복사했다는 사실을 나중에 알게 되었습니다).
BF16 - 전체 정밀도
이 테스트의 기준점입니다. 제가 필요로 했던 모든 것(올바른 위치, 올바른 보드 방향, 올바른 기물 색상, 올바른 강조)을 갖추고 있습니다. 점선 파란색 선은 예상치 못했지만 흥미롭습니다. 나중에 보시겠지만, 고용량 양자화 모델 중에서도 이걸 생성하는 모델은 많지 않거든요.