ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AI 코딩
    카테고리 없음 2025. 2. 7. 22:46

     

    시작하기 전에 

     

    나는 근래(오늘은 2025-02-07이다.)에 현대기아자동차연구소에서 회의를 하는 중에 내 블로그를 이용해서 해결 방법을 설명한 적이 있다. 해결책을 TSMaster에 미니프로그램으로 구현하였다. 나는 그 미니프로그램을 마이크로소프트의 Copilot, claude.ai, ChatGPT의 지원으로 작성했다. (이 순서대로 도움을 자주 받았다.)  프로 개발자들의 능력을 0~100 (100이 최고 수준)으로 하자면, 내 코딩 능력은, 추측컨데,  10 이하일 것이다. 너그럽게 봐주면 20 이하 정도. 내가 미니프로그램을 작성할 수 있었던 것은 100% ai 코딩 덕택이다.

     

    코딩 능력이 없다고 해결책을 생각해 낼 사고력이 없는 것이 아니다. 해결책을 생각해 낼 수 있는 충분한 전문 지식, 경험, 지능을 갖췄으나 코딩 능력을 갖추지 못한 사람들이, 내 주위를 보면, 많이 있을 것이라고 나는 생각한다. ai 코딩은 그들에게 자신의 해결책을 스스로 구현해 볼 수 있는 기회를 준다. 나와 함께 회의를 한 연구원들 중에도 추측컨데 그런 사람들이 많다. 그런데 현대기아자동차연구소에서는 ai 코딩을 사용할 수 없다고 한다. 기술/기밀 유출 우려 때문이다. 그렇구나! 그들의 전문성이 더 발휘되지 못하는 것이 아쉽다고 생각했다.

     

    우연한 계기로 NVIDIA Jetson Meetup 행사에 참석했다. 행사에 참석한 피아이코드(www.picode.co.kr) 사장님이 Jetson Orin Nano Super라는  "작은(이름에 Nano가 들어간다.)" 개발 보드를 현장에서 즉시 행사 가격인 50만원에 구매하여 내게 먼저 사용해보라고 주셨다. :-( 지금은 행운이라고 생각하지만 당시는 아니었다. :-)

     

    젯슨 오린 나노 수퍼(무슨 김수한무 ... 같은 이름을 ...)를 나는 '제오나'라고 부르겠다. 그냥 젯슨이라고 부르면 좋은데 엔비디아에 젯슨씨 보드들이 더 있다. 그들과 구분하기 위해서. 

     

    ALL AI가 주최하는 NVIDIA Jetson Meetup에 참석했다.

     

     

    Jetson Orin Nano Super는 이름에서 알 수 있듯이 작다. 마우스보다 조금 크다. 무게는 마우스가 더 무겁다. (친구들에게 팀즈로 설명할 때 찍은 사진이다. 책상 위를 좀 치우고 사진을 찍었어야 했구나.)

     

    제오나가 작동하도록 만들어 작지만 "로컬" ai 모델(llama3.1, deepseek-r1, qwen2.5)의 도움을 받으로 파이썬 코딩을 해봤다. 이 블로그는 그 경험에 관해 쓸 것이다.

     

    나의 결론을 미리 말하자면, 제오나의 로컬 ai 코딩은 내 수준의 코딩 능력을 갖춘 사람들에게는 가격 이상으로 유용할 것 같다. 하지만 온라인 ai 코딩 서비스를 이용할 수 없는 사람들에게만 추천한다. 이용할 수 있는 사람들에게는 온라인 서비스이용을 추천한다. 로컬 하드웨어와 모델이 조금 더 발달할 때까지. 얼마나 기다리게 될까? 2년이 안 될 것 같다. 1년도 안 될 수 있다고 생각한다. 

     

    생각해보니 지금 당장 제오나가 아니라 고성능, 대용량 로컬 하드웨어를 갖추고, 공개된 초소형 모델이 아니라 풀 사이즈 모델을 다운로드 받아 돌릴 수 있는 자금력을 갖춘 회사들은 기다릴 필요가 없겠다. 오히려 그들은 지체할 시간이 없다고 생각한다.

     

     

    모델

    • 아래 모델들을 대상으로 해봤다.
    모델 파라미터 수 파일크기 노트
    ollama3.1 8.03B 4.9GB model from Meta
    ollama3.3 70.6B 43GB Llama 3.3 70B offers similar performance compared to the Llama 3.1 405B model.
    deepseek-r1 7.62B 4.7GB DeepSeek's first-generation of reasoning models with comparable performance to OpenAI-o1, including six dense models distilled from DeepSeek-R1 based on Llama and Qwen.
    deepseek-v3 (on-line)    
    deepseek-r1 (on-line) 671B 404GB
    claude-haiku (on-line) ? ? Claude 3 Haiku is Anthropic's fastest and most affordable AI model in its intelligence class24. It is designed for quick data extraction and automated labeling tasks due to its efficient information processing and categorization capabilities
    qwen2.5 7.72B 4.7GB Qwen2.5 models are pretrained on Alibaba's latest large-scale dataset, encompassing up to 18 trillion tokens. The model supports up to 128K tokens and has multilingual support.

     

     

     

    제오나 사양

    • 제오나의 사양은 아래와 같다.
    • 나는 500GB NVMe SSD를 장착하고, OS와 모델을 모두 SSD에 저장하여 실험했다. 

    Jetson Orin Nano Super의 사양

     

     

    프람프트

    • 아래가 내가 비교 실험에 사용한 프람프트이다.
    • fast fourier transformation (FFT)에 대해 이해하고 싶습니다. 진폭과 주파수가 다른 sine과 cosine 웨이브들을 각각 5개씩 더한 입력 데이터를 만들고, 이 데이터를 FFT하여 결과에서 입력한 진폭과 주파수를 확인하는 파이썬 예제를 부탁합니다. [그래프는 plotly로 해주세요.]
      • [그래프는 plotly로 해주세요.] 부분은 처음 몇 번의 실험(llama3.1)에는 없었다. 출력 그래프를 줌-인해서 편하게 보려고 실험 초반에 추가했다.  
    • 왜 코딩인가? 나는 "로컬" ai "코딩 어시스턴트"의 가능성을 확인하고 싶어서 코딩을 요청하기로 했다.
    • 왜 파이썬인가? 내가 읽고 이해할 줄 아는 코딩 언어가 파이썬이다.
    • 왜 FFT인가? FFT는 자동차에서 측정한 데이터 처리에 쓰인다. 평균, 표준 편차 등 보다 적당히 어려워 모델 성능 차이를 구분할 수 있는 난이도라고 생각했다.
    • 왜 plotly 그래프인가? 데이터 분석에 그래프가 효과적이고 중요하다고 생각한다. 내가 결과를 판정하기에도 쉽다. plotly 그래프는 확대, 이동을 할 수 있어 그래프를 자세히 살펴보기에 좋다.

     

     

    llama3.1/ 8.0B/ 제오나 - 도전 1

    • llama3.1/ 8.0B/ 제오나에 3번 프람프팅을 한다. 그 첫 번째, 두 번째, 세 번째 프람프팅은 아래 링크와 같다. 
    • llama3.1 on Jetson Orin Nano Super FFT Demo 1, 2, 3 :: hsl's tsmaster 사용기 
    • 코딩은 하였으나 FFT의 특성에 대한 고려는 없는 것 같다.
      • 진동수 0.1Hz의 신호가 포함되는데 1초 동안의 데이터를 이용했다. 너무 짧다. 그래서 결과가 부정확하다. (나이키스트 주파수(Nyquist frequency)p : 네이버 블로그)  
      • 샘플 수가 1,000개이다. FFT 알고리즘은 샘플이 2^n개일 때 처리 속도가 빠르다. 1024 = 2^10. 큰 문제는 아니다. 실제 데이터 처리에서 데이터가 2^n개로 딱 떨어지는 경우가 얼마나 있겠는가? 
    • 코딩 수준이 나와 비슷한 것 같다. 비슷한 수준의 코드는 알아보기 쉽다. 그래도 나라면 아래 부분을 for loop를 이용해서 작성했을 것 같다. 주파수를 추가하거나 삭제할 때 코드 변경이 쉽도록.

    data1 = 5 * np.sin(2 * np.pi * 0.1 * t)
    data2 = 3 * np.sin(2 * np.pi * 0.2 * t)
    data3 = 2 * np.sin(2 * np.pi * 0.3 * t)
    data4 = 4 * np.sin(2 * np.pi * 0.4 * t)
    data5 = 1 * np.sin(2 * np.pi * 0.5 * t)

    # 진폭 6,7,8,9,10 각 주파수 0.1,0.2,0.3,0.4,0.5에 해당하는 cosine 웨이브
    data6 = 6 * np.cos(2 * np.pi * 0.1 * t)
    data7 = 7 * np.cos(2 * np.pi * 0.2 * t)
    data8 = 8 * np.cos(2 * np.pi * 0.3 * t)
    data9 = 9 * np.cos(2 * np.pi * 0.4 * t)
    data10 = 10 * np.cos(2 * np.pi * 0.5 * t)

    # 입력 데이터
    data = data1 + data2 + data3 + data4 + data5 + data6 + data7 + data8 + data9 + data10
    • 출력된 그래프와 결과를 보면 60점을 주고 싶다. 

    llama3.1의 출력이다. 입력 데이터의 시간이 너무 짧아서 FFT 계산 결과가 입력값과 크게 다르다.

     

    주파수: 0.0
    진폭: 25119.570388396238

     

    • '양': 양호하다. 작동하는 코드를 생성했다. 진폭 계산 관련 수정이 필요하다.

     

     

    llama3.1/ 8.0B/ 제오나 - 도전 2

    • llama3.1 on Jetson Orin Nano Super FFT Demo 1, 2, 3 :: hsl's tsmaster 사용기의 두 번째 프람프트.
    • "주파수에 비해 데이터의 시간 구간이 너무 짧은 것 아닙니까? 0.1Hz의 주기가 10초인데 데이터는 1초 밖에 안 됩니다."라고 지적했다. 
    • 데이터 시간을 1초에서 10초로 늘리도록 코드가 수정되었다. 전체 샘플 수는 변동없이 1,000개를 유지하였다. 
    • 출력된 그래프와 결과를 보면 70점을 주고 싶다.
    • 도전 1에서 제목이 제대로 출력되고 도전 2에서 박스로 표시된 것은 내가 도전 1의 코드를 수정했기 때문이다. 지금 기억이 났다. 내 PC에 matplotlib에서 정한 한글 폰트가 없거나 설정이 안 되어 발생한 문제일 것이다. 관련한 안내를 해주었으면 더 좋았을 것이다.  

     

    주파수: -0.49995
    진폭: 50228.519926547066
    진폭(주파수: 0.09999 Hz): 39083.643694759136
    진폭(주파수: 0.19998 Hz): 38114.41388469914
    진폭(주파수: 0.29996999999999996 Hz): 41262.377688555374
    진폭(주파수: 0.39996 Hz): 49257.55540265048
    진폭(주파수: 0.49995 Hz): 50228.51992654705

     

    • 신호에 포함된 주파수들 잘 추출했다. 진폭은 터무니 없이 크다. 진폭 계산을 할 줄 모른다. 
    • '양': 양호하다. 내가 요청한 대로 코드를 수정했다. 더 살펴서 상세히 요창하지 못한 내가 부족하다.

     

     

    llama3.1/ 8.0B/ 제오나 - 도전 3

    • llama3.1 on Jetson Orin Nano Super FFT Demo 1, 2, 3 :: hsl's tsmaster 사용기의 세번 째 프람프트
    • 도전 1, 2에서는 확대나 이동이 가능하지 않은 비트맵 그래프를 출력했다. 이는 일반적이기에 별도로 요청하지 않은면 이렇게 하는 것이 기본이다. 이것이 ai 코딩 어시스턴트의 부족함이라고 생각하지 않는다. 어쨌든, 그래프를 확대/축소/이동할 수 있도록 plotly 모듈을 이용해 달라고 요청했다. 
    • plotly 그래프를 그리도록 코드 수정되었다.  
    • 시키는 대로 코드를 수정해주는 것만으로도 시간 절약이 된다. 내 경우, 그래프 출력은 함수와 파라미터를 외우고 있지 못하여 필요할 때마다 검색을 해가면서 코딩을 한다. 그래서 품이 좀 든다. 어렵고 복잡한 문제 해결도 이득이지만 시간 절약도 상당한 이득이라고 나는 생각한다.
    • 출력된 그래프와 결과를 보니 71점을 주고 싶다. 

     

     

    • '양': 양호하다. 내가 요청한 대로 했다. 처음부터 내가 plolty로 그래프를 그릴 것을 요청을 했어야 했다. 

     

     

    llama3.3/ 70.6B/ 제오나 - 도전 불가

    • 70.6B 파라미터 모델은 제오나에서 동작하지 않는다. 제오나 메모리(8GB)에 비해 모델이 실행할 수 없을 만큼 커서(43GB) 그런 것일 거라고 짐작한다. 
    • llama3.1 8.0B 보다 거의 9배 많은 파라미터를 갖고 있는 모델이다. 설명에 따르면 llama3.1의 405B 모델과 비슷한 성능을 갖고 있다고 한다. llama3.1 8.0B 보다 9~50배가 아닌 2~4배 정도의 성능 향상만으로도 만족할 수 있었는데 ...  아쉽다.
    • 제오나가 아니라 더 대용량 더 고성능 하드웨어를 갖고 있다면 어떨까? 하는 생각을 하게 되었다. 제오나가 50만원이면 500만원짜리 하드웨어면 돌려볼 수 있지 않을까?

     

     

    deepseek-r1/ 7.6B/ 제오나 - 도전 1

    • 언론에서 deepseek-r1에 관한 보도를 접했다. 검색해보니 제오나에 다운로드 할 수 있는 모델이 공개되어 있었다.
    • 동일한 프람프트로 파이썬 코드 생성을 요청했다. 
    • 실행되지 않는 코드를 생성했다. deepseek-r1 on Jetson Orin Nano Super FFT Demo 1 :: hsl's tsmaster 사용기
    • 디버깅을 하지 않았다. 점수는 50점이다. 디버깅을 했다면 큰 노력을 들이지 않고 실행시킬 수 있을 것 같기 때문이다.  
    • '가': 그래도 가능성이 있어 보인다. 
    • deepseek-r1의 생각의 속도는 아래와 같다.

     

     

     

     

    deepseek-r1/ 7.6B/ 제오나 - 도전 2

    • 동일한 프람프트로 다시 코딩을 요청했다.
    • 1시간 16분 생각 후에 코마에 빠졌다. 나는 화면의 "thinking" (deepseek-r1은 사고 과정을 보여준다. 여기서 배우는 것이 있다. 그래서 나는 사고 과정 보는 것을 선호한다.) 보고 결과를 기다리다 밤이 늦어서 잤다. 화면으로 모델의 thinking 과정을을 보면서 기다린 시간이 1시간 30분 정도는 된 것 같았는데 ... 아침에 일어나서 보니 기록에는 4,450초로 남아있었다. 
    • deepseek-r1의 사고 과정을 보며, 이 모델의 FFT에 대한 이해나 코딩 전략 수립 능력이 나보다 더 낫다고 생각하게 되었다. llama3.1에게 변경 요청했을 때, 딱 요청한 변경만 했었다. deepseek-r1은 그에 비해 변경의 영향을 고려하여 내가 챙기지 못한 부분까지 챙겨서 코딩을 할 수 있을 것 같다.
    • '가': 가능성이 있어 보인다.
    • deepseek-r1의 4,450초 동안의 사고 과정이 궁금하신 분들은 첨부 pdf를 보십시오.

    05_deepseek-r1_local_fft_demo_2.pdf
    0.16MB

     

     

     

    deepseek-v3/ 671B/ 온라인 

    • 제오나에서 deepseek-r1의 성능에 다소 실망했다. 풀 사이즈 deepseek은 얼마나 코딩을 잘 하는지 확인해 보고 싶었다. 온라인의 deepseek에 접속하여 동일한 프람프트로 코딩을 요청했다.
    • deepseek-v3 on-line FFT Demo :: hsl's tsmaster 사용기
    • 내가 평가할 수 있는 코드의 수준은 나와 비슷한 수준이다. 그래서 이 코드의 수준을 평가할 능력은 없다고 생각한다. 그렇지만 잘 짠 코드라고 생각한다. 읽기 쉽고 군더더기가 없어서. 
    • 출력된 그래프와 수치 결과를 보면 95점을 주고 싶다. 더 높은 점수를 주지 않은 것은 다음 모델 때문이다.

     

    Frequency: 50.10 Hz, Magnitude: 1.41
    Frequency: 120.24 Hz, Magnitude: 1.13
    Frequency: 200.40 Hz, Magnitude: 0.85
    Frequency: 299.60 Hz, Magnitude: 0.00
    Frequency: 399.80 Hz, Magnitude: 0.00

     

    • '수': 빼어나다.

     

     

    deepseek-r1/ 671B/ 온라인

    • 내가 온라인에서 사용한 deepseek 모델이 제오나에서 사용한 deepseek-r1이 아니라는 것을 깨달았다. 
    • deepseek-r1에 동일한 프람프트로 코딩을 요청했다. 모델 입장에서는 동일 요청을 두 번 받은 셈이다. 모델이 그렇게 생각한다는 것을 모델의 사고 과정을 보고 알았다.
    • deepseek-r1 on-line FFT Demo :: hsl's tsmaster 사용기
    • 역시 코딩 수준은 내가 평가할 것이 아니지만 읽기 쉽고 군더더기가 없다.
    • FFT의 지식을 코딩에 적용하는 것을 알 수 있다. 나이키스트 주파수를 고려한다. 나는 이렇게 해야 한다는 것을 전에 FFT를 이용하는 미니프로그램을 작성하면서 배웠다. 소위 삽질하면서 배웠다. 그래서 이렇게 했다는 점에 주저없이 가산점을 준다.
    • 사고 과정을 읽다보면 FFT에 관해 여러 가지를 배울 수 있다. 
    • 출력된 그래프와 수치를 보면 100점을 주고 싶다.
    • 출력표에 사인파와 코사인파를 나눠서 진동수와 진폭을 표시했다. 그리고 내가 질문한대로 입력 신호와 FFT 결과를 비교했다. 이점에서 deepseek-v3도 내 프람프트를 100% 수행하지 못했다. 사고 과정을 보면 모델이 풀이를 계획하는 부분에서 프람프트를 확인하고 분석해서 코딩 계획에 반영한다. 그래서 사용자 요청에 정확하게 따르는 수행 결과를 낸 것이라고 생각한다. 

    === 사인 파 검증 ===
    주파수:  50 Hz | 입력 진폭: 1.00 | FFT 진폭: 1.00
    주파수: 120 Hz | 입력 진폭: 0.80 | FFT 진폭: 0.80
    주파수: 200 Hz | 입력 진폭: 0.60 | FFT 진폭: 0.60
    주파수: 300 Hz | 입력 진폭: 0.40 | FFT 진폭: 0.40
    주파수: 450 Hz | 입력 진폭: 0.20 | FFT 진폭: 0.20
    
    === 코사인 파 검증 ===
    주파수:  80 Hz | 입력 진폭: 0.50 | FFT 진폭: 0.50
    주파수: 150 Hz | 입력 진폭: 0.70 | FFT 진폭: 0.70
    주파수: 250 Hz | 입력 진폭: 0.90 | FFT 진폭: 0.90
    주파수: 350 Hz | 입력 진폭: 0.30 | FFT 진폭: 0.30
    주파수: 400 Hz | 입력 진폭: 0.10 | FFT 진폭: 0.10
    • '수': 빼어나다.
    • 이런 능력을 즉시 사용할 수 있다면 하는 생각이 저절로 들었다.
    • deepseek과 관련한 보안 우려를 들어서 안다. 로컬로 모델을 돌린다면  보안 우려도 없(어 보인)다.  

     

     

    claude-haiku/ ? / 온라인

    • deepseek의 성능을 보니 다른 온라인 모델의 성능이 어떤지 궁금했다. 내가 자주 사용하는 claude에 동일한 코딩 요청했다. claude의 최고 모델로 알려진 claude-sonnet에 요청을 했는데 갑자기 sonnet 이용이 많다면 haiku로 변경되었다. claude 모델의 파라미터 수를 검색해보니 공개되지 않았다고 한다.

    claude 3.5 sonnet이 안 되어 haiku를 사용하였다.

    • 입력 신호의 진동수와 진폭과 FFT 결과 확인한 진동수와 진폭을 출력하지 않았다. 
    • '우': 우수하다. 내가 평소 claude 3.5 sonnet을 사용했던 경험을 바탕으로 예상하자면, claude 3.5 sonnet 이었다면 deepseek에 버금가는 높은 평가를 받았을 것 같다.

     

     

    deepseek-r1/ 7.6B/ 제오나 - 도전 3

    • 온라인에서 deepseek의 성능을 확인하고 제오나에서 deepseek을 다시 평가해보고 싶었다. 동일한 프람프트로 다시 코딩을 요청했다.
    •  
    • 실행되지 않는 코드를 생성했다. 그런데 파이썬의 에러 메시지를 보니, 에러가 간단했다. 파이썬은 들여쓰기(indentation)가 중요하다. 들여쓰기로 코드 블록을 정한다. 코드를 보니 중간부터 갑자기 각 줄의 맨 앞에 공란이 한 칸 들어있다. 그래서 들여쓰기로 인식되어 IndentationError가 발생했다.
    • 빈 칸들을 없애고 다시 실행했다. 다시 에러가 발생했다.

     

    • layout = go.Layout(   
          title='Signal Analysis',
          xaxis=dict(title='Time (s)', overlaying='x', side='bottom'),
          yaxis=dict(title='Amplitude', overlaying='left', side='left'),
          xaxis2=dict(title='Frequency (kHz)', overlaying='x2', side='top'),
          yaxis2=dict(title='Magnitude', overlaying='y2', side='right')
      )
    • yaxis=dict(... 이 줄에 'left'가 에러의 원인이었다. 정의되어있지 않은 값이라고 나온다. 위 아래 코드를 보니 'left'가 아니라 'y'여야 할 것 같다. 'y'로 변경하니 코드가 에러 없이 실행되었다. 

    • 출력된 그래프를 보니 60점을 주고 싶다.
      • 입력 신호 그래프를 출력하지 않았다.
      • 주파수 도메인 그래프인데 그래프의 x축이 Time(s)로 되어있다. Frequency(Hz)여야 한다.
      • x축의 수치를 보면 1,000배 증폭되어있다. 사고 과정을 보면 샘플 수에 따라 스케일을 보정해야 한다고 나와있다. 스케일 보정을 고려한 것은 잘 하였다. 코드 구현은 제대로 하지 못했다.  
      • y축에 Amplitude와 y1축에 Magnitude. 둘의 차이는 무엇인가? 각각의 그래프에 입력 신호와 FFT 결과를 표시하려다가 실패했었나?
    • 주파수와 진폭 결과를 별도로 출력하지 않았다.
    • '가': 실행되지 않는 코드를 생성했기에 양호하지 않다. 사고 과정을 보니 코딩 계획은 나쁘지 않다. 구현이 부족하다. 사고 과정을 보니 가능성이 있다고 생각한다. 

     

     

    qwen2.5/ 7.6B/ 제오나 - 도전 1

    • 제오나에서 실행할 수 있는 다른 모델을 찾다가 qwen2.5/ 7.6B 모델을 찾았다. 알리바바에서 만들어 공개한 모델이라고 한다.
    • 동일한 프람프트로 코딩을 요청했다.
    • qwen2.5 on Jetson Orin Nano Super FFT Demo 1, 2 :: hsl's tsmaster 사용기
    • 한 번에 잘 작동하는 코드를 생성했다. 
    • 출력된 그래프와 수치를 보면 70점을 주고 싶다.
      • llama3.1과 견줄만하나 그쪽에 1점을 더 주었다. 아래 그림에서 보는 것처럼 각 주파수의 진폭이 모두 동일한 예제를 만들었기 때문이다.
      • 샘플 수를 감안한 진폭 스케일 보정을 못했다. llama3.1도 마찮가지다.
      • FFT의 결과는 symmetric하기 때문에 주파수가 음수(이런 건 존재하지 않는다.)인 부분을 제거해야 한다. 그렇게 하지 았다.  

    • 코드를 보면 주파수별로 다른 진폭의 신호를 만들려고 했던 것 같다. freq와 amp의 쌍을 한 번만 만들어야 하는데, freq와 amp의 모든 조합들을 쌍으로 만들었다. 결국 모든 freq에 준비된 모든 amp를 더하여 최종 amp가 freq와 무관하게 동일하다. 
    # 설정값 설정
    fs = 1000           # 샘플링 빈도
    t = np.arange(0,1,1/fs)   # 시간 벡터

    # 주파수와 진폭 설정
    frequencies = [50, 120, 180, 230, 300]   # frequencies와 amplitudes를 보면 주파수별로 다른 진폭의 입력을 만들려했다.
    amplitudes = [1, 0.5, 2, 1.5, 0.7]

    # 입력 데이터 생성
    signal = np.zeros_like(t)
    for freq in frequencies:
        for amp in amplitudes:
            signal += amp * np.sin(2*np.pi*freq*t) + amp * np.cos(2*np.pi*freq*t)    
    • '양': 양호하다. 한 번에 동작하는 코드를 생성했다.

     

    qwen2.5/ 7.6B/ 제오나 - 도전 2

    • 아래와 같이 진폭이 동일하다는 점과 원인이 되는 코드 부분을 알려주며 다시 코드 생성을 요청했다. 
    # 입력 데이터 생성
    signal = np.zeros_like(t)
    for freq in frequencies:
        for amp in amplitudes:
            signal += amp _np.sin(2_np.pi*freq*t) + amp _np.cos(2_np.pi*freq*t)
    이렇게 입력 데이터를 생성하면 모든 주파수의 진폭이 동일하게 됩니다. 개선해주세요.
    • 코드를 수정하였지만 여전히 진폭이 동일하였다.
    • 여전히 동일한 문제가 발생한다고 알려주고 다시 코딩해 달라고 요청했다. 
    • qwen2.5 on Jetson Orin Nano Super FFT Demo 1, 2 :: hsl's tsmaster 사용기
    • 수정된 코드는 주파수별로 진폭이 다르다. 개선되었다. 
    • 음수 주파수나 진폭의 스케일 문제는 해결되지 않았다.

    • '양': 양호하다. 점수를 llama3.1과 동일하게 71점으로 한다.

     

     

    결론

    • 제오나에서 동작하는 llama3.1, deepseek-r1, qwen2.5 모델들을 이용하여 "로컬" ai "코딩 어시스턴트"의 가능성을 살펴보았다. 그리고 온-라인의 deepseek-v3, deepseek-r1, claude-haiku 풀-모델에 동일한 프람프트로 코딩을 요청하여 로컬 모델들과 비교해보았다.   
    • 현재 로컬 ai 코딩은 내 수준의 코딩 능력을 갖춘 사람들에게는 가격 이상으로 유용할 것 같다. 하지만 온라인 ai 코딩 서비스를 이용할 수 없는 사람들에게만 추천한다. 이용할 수 있는 사람들에게는 온라인 서비스이용을 추천한다. 로컬 하드웨어와 모델이 조금 더 발달할 때까지. 얼마나 기다리게 될까? 2년이 안 될 것 같다. 1년도 안 될 수 있다고 생각한다.
    • 생각해보니 지금 당장 제오나가 아니라 고성능, 대용량 로컬 하드웨어를 갖추고, 공개된 초소형 모델이 아니라 풀 사이즈 모델을 다운로드 받아 돌릴 수 있는 자금력을 갖춘 회사들은 기다릴 필요가 없겠다. 오히려 그들은 지체할 시간이 없다고 생각한다.
    • 사고 과정을 표시하는 모델은 요청에 대한 응답은 느리지만 사고 과정을 보면서 알게되거나 깨우치는 것들이 있어서 좋다. 필요에 따라 사용자가 사고 과정을 보거나 보지 않도록 할 수 있어서 좋다.   

     

     

    뒤끝있는 한마디

    엔비디아 "공식" 개발자 홈페이지의 Getting Started Guide( Jetson Orin Nano Developer Kit Getting Started Guide | NVIDIA Developer)를 따라하다 고생만 하고 시간만 낭비한 후에 (나는 내 기초 지식이 부족하여 제대로 못 따라했다고 생각하고 따라하기를 반복했다. 나는 멍청이) 유튜브 검색으로 찾은 방법을 따라 소프트웨어 설치를 완료하고 실험도 했다.

    엔비디아, 그 많이 번 돈을 사용자들을 위해서 조금만 쓰시라.

     

     

    Jupyter Notebook

    • 코드를 실행한 주피터 노트북을 첨부한다.

    local_ai_coding_FFT_demo.zip
    0.75MB