linuxer-admin

gpt-oss-20b Tool Calling 

System Specifications
CPU: AMD Ryzen 9 9950X3D 16-Core (32 threads, up to 5.75 GHz)
RAM: 60GB
GPU: NVIDIA GeForce RTX 5090 (32GB VRAM, CUDA 12.9)
Storage: 1.9TB (1.5TB available)
OS: Fedora Linux 42 Server Edition
Kernel: 6.15.10

이스펙으로 gpt-oss-20b 모델을 구동하고 테스트했다.
그냥 단순 부하 테스트로는 gpt-oss-20b 모델을 vllm 으로 실행했을때 90rps 까지 처리하고 초당 토큰을 생성하는 속도는 4000토큰 정도 생성했다.
4000 token/s 라는 이야기다.

생각보다 준수한 성능에 감탄하고 바로 도구를 사용할 수 있도록 작업을 했다.
홈랩의 구성을 여러번 갈아 엎게된 사연이 이과정에 있었다.

  1. MSI X870 보드의 칩셋이 생각보다 최신이어서 WIFI 드라이버를 Linux 에서 애매하게 지원
    • 강제로 컴파일로 사용하도록 셋팅
    • 커널업데이트이후 네트워크 안됨
    • OS를 바꿔가며 잡아서 테스트
    • 페도라에서 지원하는 버전과 드라이버를 확인하여 각자 OS에서 같은버전을 찾아서 설치
  2. proxmox 셋팅해서 쿠버네티스 클러스터 구성
    • 데비안 계열로 WIFI 트슛이 쉽지 않았다..
    • VM을 띄우고 사용하는 리소스가 생각보다 많이 들고 경합이 발생함을 인지
    • 최적화 작업을 진행했으나, 홈랩환경에선 VM을 나눠 쓸필요가 없다고 판단 proxmox 탈락
  3. 페도라로 셋팅하고 K3S를 채택
    • Argocd / harbor / gitops 구조
      https://github.com/Cloud-Linuxer/argocd-apps
    • 앗! 집 인터넷이 배포만 하면 다운된다.
    • 인터넷 문제라 생각하고 AS신청.
    • ISP공유기를 사용하지 않으면 100MB 로 회선이 고정되어 공유기를 쓸수 밖에 없음.
    • 공유기 하단에 MAC Addres 가 수십개가 동작하면 ISP공유기가 실시간으로 재부팅됨.
      • 확인하기 위해 스크립트로 DHCP로 IP할당 받는 인터페이스만 늘려봄 공유기 다운됨
      • 그럼 공유기 두대가 DHCP를 같이 뿌려서 발생하는 증상인지 확인하려고 하단의 공유기를 AP모드로 변경 증상 동일
      • 어떻게 해도 MAC사용량이 늘어나면 공유기가 다운됨
    • 홈랩에서 너무 거창해짐을 판단 k3s 포기
  4. Docker compose 로 변경
    • 간략하게 변경된 구조에서는 인터넷은 아주 안정적임
    • vllm gpt-oss-20b 모델이 로딩하다 중단되는 증상이 발생
      • ollama 나 sglang 등은 정상
      • gpu 셋팅 옵션 문제라 생각하고 vllm 셋팅을 계속 변경함
      • 모델 로딩이 느려서 ./model 디렉토리를 마운트해서 pre-download 구조를 설정했는데 이 과정에서 모델의 일부가 깨져서 로딩이 진행되지 않음.ㅠㅠ 인터넷!!!!!!!!!!!!
      • 삭제후 다시 받아서 정상화됨
    • Tool calling 을 구현하기 시작
      • 아무리 강하게 모델에게 프롬프트로 도구를 강제하여도 도구를 사용하지 않음 1+1은? 이런 질문도 도구를 사용하지 않고 그냥 모델이 응답함
      • native tool calling 을 지속적으로 테스트했으나, 모델이 응답하지 않음.
      • native tool calling 을 사용하기위한 조건이 복잡함.
        • harmony 포멧을 이용해야함
        • harmony 를 사용하도록 만들어진 vllm 이미지는 어텐션3을 사용해야함
          • 블랙웰은 어텐션3을 사용할수 없음.
          • 백엔드를 다른것으로 고정하면 하모니 포멧을 사용하는 vllm 버전을 사용불가
        • harmony를 포기하고 다른방식으로 툴체인을 구성하기로 함
      • 툴사용에 대한 키워드가 프롬프트에 포함되면 강제로 프록시해서 툴 결과를 프롬프트에 끼워넣어서 출력하는 방식으로 설정
      • 이는 프록시 에뮬레이션 방식이라 보임
      • https://github.com/Cloud-Linuxer/gpt-oss/blob/main/FINAL_IMPLEMENTATION_REPORT.md

위의 정리와 같이 gpt-oss 모델에서 harmony를 사용하지 않는 펑션 에이전트를 제작.

이로서 3주차에 vllm 관련한 이슈들과 모델 사용관련 옵션 gpu관련한 부분들을 정리하여 사용가능하도록 수정하였다.

이런 질문을 하는 사람이 있을거라 생각 못했는데..이후 재대로 구현후에는 재대로 대답을 했다.

아 재미있었다!!

리눅서 블로그 해킹 사후부검-해줘-

얼마전에 블로그가 털렸다. 특정 게시물 하나의 댓글에 사용된 유저 이미지에 인젝션이 들어가 그 게시물이 눌리면 다른사이트로 납치되는 증상이 있었다. 그 문제는 어찌어찌 찾아서 해결했다.

그리고 난뒤 나는 복구가 완료되었다 생각하고 홀가분하게 "역시 나는 모든걸 해결할수 있다" 라며 으쓱 했다.

그런데 그 이후 내블로그는 더 심각하게 해킹을 맞았다.

인덱스부터 시작해서 대부분의 파일이 변조 되었다.
오늘의 포스팅은 "해줘"
커서와 작업을 했고 나는 그냥 ssh연결해서 디렉토리에 적절한 권한을 준뒤 알아서 수정하고 더 확인할 부분만 추가요청을 한게 다 다.

워드프레스 해킹 복구 요약

1. 사건 개요

  • 워드프레스 사이트가 대량의 악성 스크립트와 백도어에 감염됨.
  • 핵심 파일 및 플러그인‧업로드 경로까지 광범위하게 변조.

2. 발견된 주요 악성 요소

  • index.php: goto로 난독화된 코드로 완전 변조.
  • wp-includes 핵심 파일들(template-loader.php, cron.php, functions.php, general-template.php, plugin.php, wp-blog-header.php, wp-load.php) 첫머리에 악성 include 또는 PHP 시작 태그 누락.
  • 악성 플러그인: wp-content/plugins/jealous-whale/ 전체.
  • 타임스탬프형 악성 파일: custom_file_*, custom.file.* 등.
  • 중첩 images 폴더에 다수의 index.php.
  • wp-admin/css/colors/midnight/midnight/ 내부 난독화 PHP.
  • blocks/pullquote/ 경로의 악성 index.php.
  • 변조된 robots.txt (수상한 sitemap URL).
  • DB 백도어 adminbackup 계정과 hack_file 옵션.

3. 수행한 조치

  1. 파일 복원·삭제
    • 정상 워드프레스 코어로 교체, PHP 시작 태그 추가.
    • 악성 플러그인·파일·중첩 디렉터리 전부 삭제.
  2. 데이터베이스 정리
    • adminbackup 관리자 계정, hack_file 옵션 제거.
  3. 퍼미션/소유권 수정
    • 파일 644, 디렉터리 755, 소유자 apache:apache.
  4. robots.txt 표준 값으로 복원.
  5. 웹 서버 재시작 후 정상 동작 확인(HTTP 200, PHP 실행).

4. 최종 결과

  • 사이트(https://linuxer.name/) 정상 로딩, HTML 출력 정상.
  • 악성 코드·백도어 전부 제거 완료.

cursor user role example

  1. Reply exclusively in Korean.
  2. If code exceeds 500 lines, recommend modularizing it.
  3. Only generate code upon explicit request.
  4. Code snippets or examples are strictly prohibited.
  5. Use nouns for variables/classes and verbs for functions. Ensure names are pronounceable and scoped.
  6. Follow KISS: avoid unnecessary complexity.
  7. Apply YAGNI: implement only features you currently need.
  8. Use SOLID principles for modular design.
  9. Avoid global variables and long parameter lists.
  10. Comment only to explain intent or rationale.
  11. Enforce consistent formatting—spaces/tabs, indentation, line length.
  12. Practice TDD: write failing tests, implement, then refactor.
  13. Disclose AI use; always fact-check and human-review AI-generated content.

AWS Certified Data Engineer - Associate - 합격후기

DEA-C01 합격 후기를 쓰러왔다.

AWS Certified Data Engineer - Associate 자격증은 2024년 3월 12일 정식으로 출시되었으며, 취득일은 3월 14일이다.

먼저 DEA 시험은 Beta 시기를 거쳐서 오픈했는데, 그 이전에 https://explore.skillbuilder.aws/learn 에서 강의를 이미 오픈했다. 나는 사실 자격증을 얼른 취득하고 싶어서 조금씩 공부를 해놓고 있었다.

(올서티가 마려웠다.)

https://aws.amazon.com/ko/certification/certified-data-engineer-associate/


공부의 시작은 시험안내서 이다.

https://d1.awsstatic.com/ko_KR/training-and-certification/docs-data-engineer-associate/AWS-Certified-Data-Engineer-Associate_Exam-Guide.pdf

내가 본 안내서에서 중요하다 생각하는 부분이다.

  • 프로그래밍 개념을 적용하면서 데이터를 수집 및 변환하고 데이터 파이프라인을
  • 오케스트레이션합니다. - Glue / Step Function
  • 최적의 데이터 스토어를 선택 및 데이터 모델을 설계하고 데이터 스키마를
    카탈로그화하고 데이터 수명 주기를 관리합니다. - S3 / RDS(PostgresSQL) / RedShift / Dynamodb
  • 데이터 파이프라인을 운영화하고 유지 관리 및 모니터링합니다. 데이터를 분석하고
    데이터 품질을 보장합니다. - Kinesis / Glue
  • 적절한 인증, 권한 부여, 데이터 암호화, 프라이버시 및 거버넌스를 구현하고 로깅을
    사용합니다. 로깅을 활성화합니다. - CloudTrail / lake formation

서론만으로도 데이터엔지니어의 역할이 보인다. 적절한 데이터 스토어(데이터 레이크 / 데이터 웨어하우스 / 데이터베이스등) 에 파이프라인을 통하여 수집 변환 적제를 하는것이 핵심이고, 이과정에서 암호화, 모니터링, 거버넌스틀 통한 제어를 하는것이다.

어떤 시험을 볼때도 안내서가 제일 중요하다. 재대로 안보면 시험에서 어이없게 떨어질수 있다. 테스크 설명을 보면서 AWS의 서비스를 연상할수 있는게 가장 중요한 포인트이다.

그러면 예를 들어서 시험안내서의 1.1 데이터수집에서 <데이터를 수집하는 AWS 서비스의 처리량 및 지연 시간 특성> 에 대해서 이야기 해보겠다. 일반적으로 AWS에서는 데이터를 수집하는 Kinesis 이다. Kinesis 는 보통 Stream 과 Firehose 로 구분된다. 이 두가지를 헷갈리는 사람이 많은데, 나 같은 경우엔 이두가지를 이렇게 나눈다

기능/특징Kinesis Data StreamsKinesis Data Firehose
주요 용도 실시간 데이터 스트리밍 처리 및 분석을 위한 고수준 API 제공. 사용자가 스트림 데이터를 자세히 제어하고 관리할 수 있음.데이터를 실시간으로 수집하고, 변환하여 S3, Redshift, Elasticsearch, Splunk 등의 AWS 서비스로 쉽게 로드.
데이터
스토리지
스트림 내의 데이터는 최대 7일까지 저장 가능. 데이터 보존 기간 사용자 설정 가능.Firehose는 스스로 데이터를 저장하지 않음. 바로 다음 대상으로 전송.
데이터
처리
사용자는 스트림 데이터를 읽고 처리하기 위해 자체 소비자(예: EC2 인스턴스, Lambda 함수)를 관리해야 함.데이터 변환 및 필터링 기능 내장. Lambda를 사용하여 데이터 변환 가능.
대상
서비스
통합
Kinesis Data Streams 자체는 직접적인 데이터 저장 대상을 제공하지 않음. 소비자가 데이터를 읽고 처리한 후 저장소에 저장 필요.S3, Redshift, Elasticsearch 및 Splunk로 데이터를 직접 전송할 수 있음.
관리
편의성
높은 수준의 관리와 모니터링 필요. 사용자가 스트림과 데이터 소비자를 직접 관리.관리가 훨씬 쉬움. AWS가 대부분의 관리 작업을 자동으로 처리.
시작
난이도
설정과 관리에 더 많은 단계와 고려 사항이 있음.설정이 간단하며, 몇 분 내에 데이터 스트리밍 시작 가능.
실시간
처리
거의 실시간으로 데이터 처리 및 분석 가능.거의 실시간으로 데이터를 수집하고 대상 서비스로 전송.
비용데이터 스트림의 샤드 수, PUT 요청 수, 데이터 전송량 등에 따라 비용이 결정됨.전송된 데이터의 양에 따라 비용이 결정됨.

이런형태의 차이점을 이해하고 있으면 이제 두가지 서비스를 고려할때 바로 판단할수 있다. 또한 이 두가지 서비스는 실시간이 아니다. 거의(실시간)이다. 더 실시간으로 처리해야한다면 큐서비스를 사용해야한다.

시험 안내서의 범위는 너무 넓으니 속성으로 공부하고 싶다면 이제 사전테스트를 해야한다.

https://explore.skillbuilder.aws/learn/course/external/view/elearning/18868/exam-prep-official-pretest-aws-certified-data-engineer-associate-dea-c01-korean

나는 사전테스트를 여러차례 풀었고 해체하 듯 하나하나 Docs를 찾아가며 봤다. 예제문제가 훨씬어렵다. 예제문제 85%이상이면 시험을 봐도 좋을거 같다.

나는 다시 AWS의 모든 자격증을 획득했다.

읽어주셔서 감사하고 좋은하루 되시라!

AWS-ALL-Certification-Review

50일간의 챌린지를 끝냈다.

근래의 나는 다시금 내한계를 부수고 성장하는 과정을 거쳤다. 어느 순간부터 일하는것도 너무 쉬웠다.
공부하는건 시험이라는 부담감은 있었지만 공부가 어렵진 않았다.

50일간의 긴 시간이었다. 평균 5일에 1개의 자격증을 취득했다.

2023.12 CKAD: Certified Kubernetes Application Developer
2023.12 AWS Certified cloud practitioner
2023.12 AWS Certified Solutions Architect - Associate
2023.12 AWS Certified Developer – Associate
2023.12 AWS Certified SysOps Administrator – Associate
--------------------------------2024----------------------------------
2024.01 AWS Certified Database - Specialty
2024.01 AWS Certified Security - Specialty
2024.01 AWS Certified Advanced Networking - Specialty
2024.01 AWS Certified Solutions Architect - Professional
2024.01 AWS Certified: SAP on AWS - Specialty
2024.02 AWS Certified DevOps Engineer – Professional

시험응시료만 1,609,128원을 사용했다. 업무와 공부를 병행하는것도 어려웠다. 새벽 2시까지 매일같이 ChatGPT와 공부했다.

먼저 내가 공부한 방법을 설명하겠다. 나는 집중한 시간만 공부한 시간으로 잡았다. 자격증 평균 10시간정도의 공부시간을 가졌다. 공부시간은 스탑워치를 켜고 집중이 깨지면 스탑워치를 멈췄다. 평균 12분정도의 집중을 가질수 있었다.

그리고 공부는 보통은 이해를 하기위해 시험안내서를 읽었다. 공부의 시작과 끝은 시험안내서였다.

https://aws.amazon.com/ko/certification/certified-cloud-practitioner/

자격증 소개 페이지에 시험안내서가 있다. 이 시험안내서를 기반으로 분석한다.

여기 링크를 다보면 시험을 볼준비가 30%정도 완료 된거다. 그러면 이제 어떤 공부를 하냐?
안내서엔 도메인과 서비스가 있다.

태스크 설명 1.1: AWS 클라우드의 이점 정의.
관련 지식:

  • AWS 클라우드 가치 제안
    기술:
    • 규모의 경제에 대한 이해(예: 비용 절감)
    • 글로벌 인프라의 이점 이해(예: 배포 속도, 글로벌 도달 범위)
    • 고가용성, 탄력성 및 민첩성의 장점 이해

도메인은 다음과 같은 설명을 해주는데 그럼 이제 한줄한줄을 가지고 ChatGPT와 이야기를 하며 내가 모르는 키워드를 정리한다.

https://chat.openai.com/share/e84fb046-f996-4938-bd2d-c1526e3ee2fe
잠깐 예를들어서 질문을 한내용을 첨부한다. 내가 사용하는 프롬프트는 주로 자세하게 / 쉽게 / 키워드 추출 / 시험 내용 추천 / 등이다.

물론 나는 이미 한번 시험을 모두 본터라, 그동안 안다뤄본 서비스들을 따라가는 시간이라 좀더 수월함이 있었다.

그래도 나는 갱신의 시간을 가지면서 그동안 못다뤄본 서비스를을 만들어보거나 어떤방식으로 구성된지 확인하는 시간을 거치며 한층더 촘촘한 아키텍처구상력을 가지게 되었다.

올해의 첫 목표는 2달정도 빠르게 끝냈다. 이제 좀 쉬고 다음 목표를 향해 달려보려한다.

이글이 도움이 되면 좋겠다.
읽어줘서 감사하다.

좋은저녁 되시라!