Deep Learning/NLP

Jetson 에서 LLAMA2 돌리기!

jinmc 2023. 7. 28. 14:45
반응형

결론부터 말하면, 돌리기는 실패했습니다. 하지만 llama.cpp를 make하는데까지는 성공하고, 또 어떤 노력으로 돌리려고 했는지의 과정을 설명하려고 합니다.

 

사용 device : Nvidia Jetson Xavier NX Developer

cat /proc/device-tree/model

그 전에 llama2를 로컬에서 돌리는 방법의 포스팅을 참고해서, 

 

https://walkaroundthedevelop.tistory.com/166 

 

맥북 실리콘에서 LLAMA2 로컬에서 돌리는 방법입니다.

reference : https://www.youtube.com/watch?v=TsVZJbnnaSs Repos and models 1. Request access: https://ai.meta.com/resources/models-and-libraries/llama-downloads/ 2. Clone: https://github.com/facebookresearch/llama 3. Clone: https://github.com/ggerganov/llama

walkaroundthedevelop.tistory.com

돌리는 와중에, llama.cpp를 make 했을때, 에러가 생기는걸 발견했습니다.

 

k_quants.c: In function ‘ggml_vec_dot_q2_K_q8_K’:
#(생략..)
<builtin>: recipe for target 'k_quants.o' failed
make: *** [k_quants.o] Error 1

다음 issue page 에서 해결방법을 알려줍니다.

 

https://github.com/ggerganov/llama.cpp/issues/2075 

 

k-quant causes builds to fail on ARM32 · Issue #2075 · ggerganov/llama.cpp

Expected Behavior Build using make. Current Behavior Build fails with error, but adding LLAMA_NO_K_QUANTS=1 allows build to succeed. Environment and Context Commit d7d2e6a0f0c74f7a570dae384dfff371a...

github.com

make clean && LLAMA_NO_K_QUANTS=1 make

로 make 를 할 수 있습니다.

 

하나 또 참고할 것은, python3.6에서는 돌아가지 않습니다. 3.9정도는 되어야될것 같네요. Jetson Xavier NX는 기본적으로 3.6이 설치가 되어 있어서, Anaconda를 설치해 주어야되는데, anaconda는 jetson에서 설치되지 않기 때문에 Archiconda를 설치해야 합니다.

 

하지만 macbook에서 quantize한 모델을 jetson으로 옮긴 후 인퍼런스를 시도했을 때 되지 않았습니다...

 

아마 Convert.py 를 통해서 macbook에서 convert한게 안돌아가는게 아닐까 생각이 듭니다. 그래서 jetson에서 compile 하려고 했는데, 13GB 를 compile한거를 또 13GB가 되기 때문에 .. 용량이 부족합니다. 그래서 USB memory를 꼽아서 했더니, 다음과 같은 에러가 나왔습니다.

User
Traceback (most recent call last):
  File "/home/nvidia/Develop/llama.cpp/convert.py", line 1288, in <module>
    main()
  File "/home/nvidia/Develop/llama.cpp/convert.py", line 1283, in main
    OutputFile.write_all(outfile, params, output_type, model, vocab)
  File "/home/nvidia/Develop/llama.cpp/convert.py", line 1088, in write_all
    ndarray.tofile(of.fout)
OSError: 16777216 requested and 13256735 written

OSError에서.. 여기서 그만하는게 맞다고 생각되서, 멈췄습니다. 실제로 Xavier NX 보다 더 좋은 orin 을 통해서 성공했다고 하는데, 확실히 llama.cpp가 cpu를 사용하는 만큼 별로 빠르지는 않다고 합니다.

 

반응형