2025년 9월 25일 목요일

gtr9 pro, ai max+ 395, gpt-oss-120b 돌아간다~!

여러가지 샛팅을 해봤지만 잘 안되는 상황에서 검색을 해보니까

레모네이드 서버를 이용해서 amd에서 서빙하는것을 발견했다.

일단 윈도우에서 ram 64g vram 64g에서 돌아는 가는데 컨텍스트가 낮았다.

그런데 속도가 빠르고 gpu를 다 쓰길래 희망을 갖게 되었다.


하여간 듀얼부팅으로 맛만 보자는 생각으로 리눅스 데스크탑을 깔았고


레모네이드만 설치해서 해봤는데 ram 32g vram 96g 로 gpt-oss-120b를 돌리는데 성공했다.

올라마 서버처럼 그냥 레모네이드를 띄우면 됐고 레모네이드 자체 채팅은 tps가 나오지 않았다.


그래서 openwebui로 openai 연동으로 레모네이드를 연결했고 채팅의 답변에 있는 정보로 tps를 얻을 수 있었다.


처음은 약 50tps 나오고 이후 줄어들어 40대로 나온다.


일단 막 빠르진 않지만 사용하는데 큰 문제 없이 적당하다.


그래서 20b도 해봤는데 20b는 70tpb 정도 나오더라.


vllm 도 해보고 싶은데 아직은 못해봤고 검색해 봤는데 rocm이나 vulcan이나 큰 차이 없다는거 같다.


하여간 llm 돌리기 엄청 빠르진 않지만 큰 모델을 돌릴수 있기 때문에 적당하다고 느낀다.

이건 장점이다.


단점은 드라이버 문제인지 윈도우고 리눅스고 이런 저런 문제들이 있다는 것인데 시간이 지나면 해결이 될수도 있고 어찌 우회로가 없는것도 아니라서 이건 그냥 이해하고 가련다.

2025년 9월 20일 토요일

gtr9 pro, ai max+ 395, strix halo? 아 시발 계륵인가

좀 더 큰 모델을 돌리고 싶은 욕심에 맥스튜디오 울트라를 저울질 했었더랬다.

근데 600 넘는돈이 부담스러웠다. 96기가인것도 그렇고..

여기다 이 돈을 태우는게 맞나는 생각이 많았다.


지름신을 이겨내려면 뭔가를 사야 했는데 16코어 32쓰레드에 unified memory 128gb 라는 엄청난

장점의 머신이 있기에 질렀다. 발열을 위해서 그리고 바로 구매하기 위해서


gtr9 pro를 구매했다. 할인,관부가세 내주는 걸로 260 얼마 준거 같다.


윈도우 11프로도 oem으로 제공하고 있기에 ai를 생각 안 하면 나쁜 선택은 아니었다.


내가 가장 원한건 gpt-oss-120b를 돌리는 거였다.

96gb vram에 61gb 정도의 4q 모델을 돌리는것은 어렵지 않으리라 더 높은 모델도 돌리겠지 했다.


결과적으로는 간신히 돌린다.


난 아직 고수준으로 ai 서빙을 하고 있는 입장은 아니며 앞으로 더 좋은 방법이 나온다면 공유 하겠다.

대부분의 개인적으로 ai 돌리시는 분들이 ollama나 lmstudio를 사용할 것으로 보인다.


두 프로그램다 llama.cpp를 내부적으로 사용한다고 하는데 처리 방식이 사뭇다른것 같았다.

대단히 특이한 상황들을 많이 목격했는데 하나씩 이야기 해보겠다.


lmstudio

lmstudio는 서빙 방식을 정할수 있어서 그나마 자유도가 있다고 할수 있다.

cpu,vulcan,rocm 중 골라서 할수 있다.

cpu  제외하고 성공한 케이스가 1개 있는데 vulcan 4096 컨텍스트였다.

일단 선택 가능한 옵션이 렘을 64:64, 32:96으로 사용하는거였다.

32:96으로 96vram으로 하면 다 될줄 알았는데 다 실패했다.

이유는 ram에 올리고 vram에 복사하는거 같더라..???

아니 시발 61기가 짜리 올리는데 ram 61기가 이상 쓴다는거냐? 미쳤나? 근데 그런갑다.

성공한 케이스는 64:64 vulcan 4096 컨텍스트 ㅋㅋㅋㅋ 돌아는가더라

tps는 40 정도 나왔다.  rocm은 안되더라

cpu로 하니까 ram 사용량이 70기가 정도 되는데 20이하의tps가 나왔다.

7800x3d에서도 20 정도는 나온거 같은데 거기다 cpu 를 이빠이 쓰긴 하는데 32개로 나오는 코어 중에 16개만 쓰더라. 이러면 8 코어 16쓰래드 쓰는거라 이거 방법이 없나 싶긴했다.

결국 cpu로 돌리거나 vulcan 컨텍스트 거의 없이해서 돌리거나다  조금씩 올리면서 테스트해도

되겠지..


ollama

이 친구는 작은 모델을 올릴때 ram 사용량이 안 올라가고 서빙이 되더라 그래서 기대를 했는데

다 실패했다. 무슨 메모리 레이아웃이 안 맞는데..;;

64:64로 성공했었을수도 있다. 근데 그런 위나 아래나 큰 차이 없어서..


결국 컨텍스트 사이즈가 작은 것만 됐던 것 으로 기억한다.



최고의 단점

64:64, 32:96 이런거 전환하려면 리부팅 해야 한다.

amd 아드레날린인가 이거로 해보면 512ram 부터 시작해서 vram을 수정할수 있는데

작은건 몇개 있는데

내가 원하는 vram 7~80 정도 이런건 없고 64,96 이렇게 옵션이 적었다.

어떻게 안되려나..;


아직 제대로 쓰고 있지 못하고 있다. 어따쓰지 환불 가능한가? 이런 생각만 많이 든다.

다른거 연구 중이도 혹시나 더 좋은 일이 생긴다면 글 남기도록 하겠다..


혹시나 구매를 망설이시는분들은 좀 찾는게 좋을듯 내가 혹시나 아름다운 사이즈 나오면 공유하겄다.



2025년 9월 15일 월요일

qwen3-next-80b 모델 이제 lmstudio에서 사용 가능하다!!

 오늘 mlx 업데이트가 되었고 원래 모델 지원 안 한다고 안 되던 모델인

qwen3-next-80b 모델이 사용 가능해졌습니다.

전 맥스튜디오 m1 max 64gb 모델인데 엄격함 등급으로 실행에 성공했습니다.

안되면 가드레일 끄고 하면 될듯 (ram 땡겨 쓸지도)

mfxp4 양자화 42.37기가 버전입니다.

38 tps 나오네요. 쓸수는 있을듯

이 머신으로 돌리는 거의 최대 모델이기 때문에 기대가 있었는데 안되서 안타까웠는데

즐거운 소식입니다.



어느정도 사용해보고 이야기 하지만..

mlx 의 문제라곤 하는데 컨텍스트를 키워놔도 어느정도 지나면 문제가 생기는거 같습니다.

짧게 짧게 쓰면 될듯. 아직도 gguf 는 안되는데 되는게 어디냐 싶습니다.

나중에 문제가 해결 되겄죠 뭐.

2025년 9월 3일 수요일

rtx5080으로 gpt-oss-20b 4bit 돌려보고 정리

lmstudio로 돌려보았다.

최적이라고 생각하는 옵션을 공유해 보겠다.

약 150~160정도의 TPS가 나왔다. 이정도면 뭐 날라다니는 느낌



모델설정

openai/gpt-oss-20b MXFP4 12.11GB

환경설정에서

컨텍스트 길이 (Context Length)

20000 (20k)  - 이건 미세하게 조정하면서 조금 더 늘릴수 있을듯 24k로 하니까 속도가 반토막남

GPU 오프로딩 (GPU Offload)

24 / 24 (이거 100% gpu에 올린다는 옵션일거다)


환경 설정

런타임

GGUF: CUDA 12 llama.cpp 


하드웨어 가드레인

엄격함


GPUs

Limit Model Offload to Dedicated GPU Memory (<- false) 이건 의미 없을듯

NVIDIA GeForce RTX 5080 (-> true)

Offload KV Cache to GPU Memory (->True)


이 샛팅이었다.


최초 160 TPS에서 10K 정도 컨텍스트가 생기면 100TPS 까지 떨어졌다.


끝!


혹시 더 좋은 설정 있으면 공유해 주세요.

2025년 4월 21일 월요일

비트넷 1.58, bitnet 1.58 윈도우 빌드 안될때 chrono bitnet 1.58 chrono

검색이 걸릴지 모르겠습니다.

윈도우 빌드 해볼라고 했는데 참 c++ 안한지 오래라 많이 해맸네요


기본적으로는 github의 설치 가이드대로 하면 됩니다.


git clone --recursive https://github.com/microsoft/BitNet.git

cd BitNet


# (Recommended) Create a new conda environment

conda create -n bitnet-cpp python=3.9

conda activate bitnet-cpp


pip install -r requirements.txt


# Manually download the model and run with local path

huggingface-cli download microsoft/BitNet-b1.58-2B-4T-gguf --local-dir models/BitNet-b1.58-2B-4T

python setup_env.py -md models/BitNet-b1.58-2B-4T -q i2_s



일단 clang, cmake 관련은 하단으로 내리면 윈도우 관련 글이 있다.

"C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat" -startdir=none -arch=x64 -host_arch=x64

아나콘다 프롬프트로 해당 명령을 하면 되는데 위치가 다를 수 있기 때문에 배치 파일을 만들어서 하면 좋다.

매번 해야 하기 때문에 번거롭다.

visual studio도 c++ 개발 등 cmake 관련과 clang 으로 검색해서 나오는것들 설치해주고 하면 된다.



근데 제목의 내용은 하여간 이렇게 하란대로 다 했는데 안 된다.

그래서 llm 으로 물어보니 이러고 저러고 나오는데

간단하게 

C:\BitNet\3rdparty\llama.cpp\common

common.cpp
log.cpp

이렇게 2개에서 문제가 생기는데

error : no type named 'system_clock' in namespace 'std::chrono'


하여간 저 2개의 파일 상단에 보면

#include "log.h"

#include <condition_variable>
#include <cstdarg>
#include <cstdio>
#include <mutex>
#include <sstream>
#include <thread>
#include <vector>
#include <chrono>  <- 추가


이런식으로 해당 라인을 추가해주면 된다.

컴파일 로그를 보내 2개의 파일에서만 문제가 있었고 이후에는 컴파일이 잘 되서 실제로 잘 돌릴 수 있게 되었다.


급하게 글을 적은 이유는 맥으로도 실패(멈춤)했는데 윈도우에서도 안되서 답답했었고 결국

스스로 해결하게 되었는데 나같은 사람 있을까봐 글을 남긴다.

요즘 llm에는 글 긁어서 주면 뭔지 대충 알려줘서 편한거 같다.
하여간 혹시 같은 문제 있으면 이거 보고 해결보시길

2022년 9월 7일 수요일

C# Async/Await Task 속도가 느릴 때 (TaskCompletionSource)

고전적인 개발 방법으로는 작업이 끝났는지 확인하기 위해서

작업 내용을 확인하는 루프를 만들어서 확인을 하는데


나는 이걸 mysql 풀링에 사용했었다.


그러니까 지금 사용 가능한 mysql 연결이 있는지를 task 에서

루프 돌면서 확인하는 방식으로 만들었던 것이다.


그런데 처음에 async/await task 방식이 문제라고 잘못 생각했던 것이

cpu 점유율을 너무 많이 먹었던 것이다.


ram이나 다른 리소스는 문제가 되지 않았다.

그저 cpu 점유율만 높았다. 그래서 이거 계속 써야 하나 싶었다.

그런데 써보니까 async 에서의 순차 실행이 참 편한 부분이 많았고

해결책을 찾아보니 내 코딩 스타일과 맞지 않았던 것이다.


루프 돌면서 쉬는 mysql 연결을 찾는 코드가 문제였는데

전체 확인하고나서 Task.Yield() 해서 한펌 쉬는 코드를 해놨는데

이게 유니티에서의 1프레임 단위가 아니었던 것이다.

결국 mysql 커넥션이 전부 사용중일때 많은 task 들이 yield를 하면서

루프를 도는데 이 텀이 너무 짧다보니 거의 무한루프(?) 돌듯이 계속 체크하면서

cpu를 다 먹었었다.


그래서 task 관련 공부를 더 했고 해결책을 찾았는데 그게

TaskCompletionSource였다.

값이 맞춰질때까지 대기하는 것이기 때문에 mysql을 다 쓴 후 반환하는 코드에서

mysql 연결 인덱스를 맞춰주니 yield를 사용할 필요가 없어서 cpu 사용율이

획기적으로 내려갔다.


사실 이건 내 코딩 스타일이 오래되서 그런거 같다. 하여간 문제는 해결이 되었고

이제 cpu 점유율 문제는 사라졌다.


2022년 4월 3일 일요일

C# CSV 파싱(여러줄 가능)

이전에는 데이터를 엑셀 데이터를 이용했는데 이건 좀 아닌거 같더라

그래서 CSV를 쓰려고 했는데 여러줄이 들어간 경우 때문에 안 쓰게 되었다.

이번에 현지화 관련 작업을 하면서 CSV를 쓰자고 생각이 들었고

CSV에서 어떤 방식으로 저장하는지를 연구해보았다. 일단 잘 동작한다. 

 
public static void ParsingCSV(string file_name,ref string[][] ret)
{
    ret = null;
    string all = ReadAllText(file_name);
    List<List<string>> lines = new List<List<string>>();
    List<string> ln = new List<string>();
    StringBuilder sb = new StringBuilder();
    bool is_string = false;
    int last = all.Length - 1;
    for(int i = 0; i < all.Length;++i)
    {
        Char c = all[i];
        if (is_string)
        {
            if (c == '"')
            {
                if (i < last && all[i + 1] == '"')
                { // " 2개가 연달아나오면 " 문자열을 써주면 된다.
                    sb.Append('"');
                    ++i;
                }
                else
                { // 문자열이 끝나는 상황
                    ln.Add(sb.ToString());
                    sb.Clear();
                    is_string = false;
                }
            }
            else sb.Append(c);
        }
        else
        {
            if (c == '"') is_string = true; // 문자열의 시작이다.
            else if (c == 0x0d)
            {
                ++i; // \r\n
                if (sb.Length > 0) ln.Add(sb.ToString());
                lines.Add(ln);
                sb.Clear();
                ln = new List<string>();
            }
            else if (c == ',')
            {
                if (sb.Length > 0)
                {
                    ln.Add(sb.ToString());
                    sb.Clear();
                }
                else ln.Add("");
            }
            else sb.Append(c);
        }
    }
    if (lines.Count <= 0) return;
    ret = new string[lines.Count][];
    for (int i = 0; i < ret.Length; ++i) ret[i] = lines[i].ToArray();
}
 "",",\r,\d, , 이 정도만 처리하면 되더라. 

 앞으로는 csv로 써보면서 문제 있으면 위 코드를 수정하게 될 것이다.

gtr9 pro, ai max+ 395, gpt-oss-120b 돌아간다~!

여러가지 샛팅을 해봤지만 잘 안되는 상황에서 검색을 해보니까 레모네이드 서버를 이용해서 amd에서 서빙하는것을 발견했다. 일단 윈도우에서 ram 64g vram 64g에서 돌아는 가는데 컨텍스트가 낮았다. 그런데 속도가 빠르고 gpu를 다 쓰길래 희망...