- GMKtec EVO-X2를 LLM 서버로 만들고 싶다
- 본체를 열고 싶지 않으니 USB-HDD에 Linux를 설치하겠다
- 기왕이면 Ubuntu 26.04.1 Server로 운용하겠다
라는 분들을 위한 기사입니다.
USB-HDD 관련 트러블슈팅
USB 메모리로 Ubuntu 설치 프로그램을 실행할 수 없는 경우
UEFI 설정에서 usb boot를 Enable로 설정하세요.
USB-HDD로 설치된 Ubuntu를 부팅할 수 없는 경우
전원을 넣은 직후의 경우, UEFI가 USB-HDD를 인식하지 못하는 것 같습니다.
Del 키를 연타하여 UEFI에 들어간 후 Ctrl+Alt+Del로 리셋하거나, Windows가 부팅되어 버린 경우에는 재부팅을 하면 다음 부팅 시에는 USB-HDD로 부팅할 수 있는 것 같습니다.
절전 기능(Power saving mechanism)이 문제를 일으키는 것 같습니다.
lsusb를 실행하여
Bus 002 Device 002: ID dead:beef 제조사명 모델명
와 같이 HDD가 표시되면, 해당 Bus ???를 바탕으로 usb? 부분을 수정하여
sudo echo on > /sys/bus/usb/devices/usb2/power/control
와 같이 실행한 뒤 sudo systemctl suspend를 하고, 복귀 후 정상적으로 동작하는지 확인하세요.
정상적으로 동작한다면, 아래 내용으로 /root/my-reboot-job.sh를 만들고 chmod +x를 실행합니다.
#!/bin/bash
echo on > /sys/bus/usb/devices/usb2/power/control
여기에 더해 아래 내용으로 /etc/systemd/system/my-reboot-job.service를 만듭니다.
[Unit]
Description=My Reboot Command
After=network.target
...
마지막으로 아래 명령어를 입력하면, 리부트할 때마다 자동으로 echo on ~ 작업이 수행됩니다.
sudo systemctl daemon-reload
sudo systemctl enable my-reboot-job.service
suspend에서 복귀했을 때, 다른 호스트에서 이름으로 접속할 수 없는 경우
avahi-daemon이 "제 이름은 ~입니다"라고 알리는 과정에서 발생하는 문제인 것 같습니다.
/lib/systemd/system-sleep/restart-avahi를 아래 내용으로 만들고 chmod +x를 해주면 해결되었습니다.
#!/bin/sh
case "$1" in
post)
...
Lemonade Server 설치
https://lemonade-server.ai/#run 을 보면 다양한 설치 방법이 있지만, 가장 편해 보이는 apt로 설치했습니다.
참고로 제가 설치했을 당시의 버전은 11.5.0입니다.
Lemonade Server 관련 트러블슈팅
설치했는데 그 다음에 무엇을 해야 하나요?
Ubuntu로 ssh 접속을 한 뒤, 포트 포워딩(Port Forwarding)으로 13305 포트를 전송하고, 브라우저에서 http://127.0.0.1:13305 를 여세요.
포트 포워딩에 대해서는 vscode의 .continue/config.yaml을 깔끔하게 만드는 내용에서도 다루고 있습니다.
그 외에, 창 왼쪽 끝의 반도체 칩 모양 아이콘을 클릭하고, Llama.cpp GPU의 rocm backend를 다운로드하세요. 그 후에는 원하는 LLM을 다운로드하여 실행할 수 있습니다.
LLM을 로드했을 때 libgomp.so.1이 없다는 오류가 발생하는 경우
sudo apt install libgomp1을 실행하세요.
UEFI에서 VRAM에 96GB를 할당했는데도 gpt-oss-120b 로드에 실패하는 경우
Lemonade Server의 기본 동작은 "일단 CPU RAM에 읽어들인 후 VRAM으로 전송"하는 방식이므로, CPU RAM이 부족하면 실패합니다.
LLM을 로드할 때 ⚙ 아이콘을 클릭하여, LLAMACPP ARGUMENTS에 --no-mmap을 추가하면 로드할 수 있게 됩니다.
LLAMACPP ARGUMENTS를 튜닝하고 싶다면
--no-mmap --flash-attn on --n-gpu-layers all --cache-type-k q8_0 --cache-type-v q8_0
설정을 사용하면 제 환경에서는 문제없이 작동하고 있습니다.
여담
- 가성비를 생각하면, EVO-X2를 구매하는 것보다 유료 클라우드 AI를 구독하는 것이 더 좋습니다.
- 수중에 100B가 넘는 LLM을 구동하는 것에 로망을 느끼는 사람, 시간이 녹아내리는 트러블과 그 해결 노하우를 습득하며 즐거워할 수 있는 사람이라면 좋은 구매가 될 것이라고 생각합니다.
- NPU에서 Qwen3.6의 35B-A3B가 작동하는 것은 충격적입니다.
- 예산은 충분하지만 클라우드 AI를 사용해서는 안 된다는 니치(niche)한 프로젝트가 있다면, 이 글이 빛을 볼지도 모르겠습니다.
Discussion