[AI 공부하기-01] 종류 및 용어 정리
지금까지 AI를 사용해 오면서 정말 대단하다는 생각과 함께 어떻게 이런 결과를 낼 수 있을까? 궁금증이 들어서 AI에 대해 조금 공부를 해보려고 합니다. 👍 🤖 AI 종류 발전 단계, 핵심 기능, 사용 목적에 따라 다양하게 구분할 수 있음 발전 단계에 따른 분류 구분 설명 예시 약인공지능 (ANI, Artificial Narrow Intelligence) 특정 목적이나 제한된 작업만 수행하도록 설계된 AI (현재 상용화된 모든 AI) ChatGPT, 알파고, 자율주행, 음성인식 비서 강인공지능 (AGI, Artificial General Intelligence) 인간 수준의 범용적인 지능을 갖추어 다양한 분야를 스스로 학습하고 문제 해결하는 AI 영화 속 AI (현재 연구·개발 진행 중) 초인공지능 (ASI, Artificial Superintelligence) 모든 영역에서 인간의 지능을 뛰어넘는 가상의 AI 미래 형태 (상상 단계) 생성 및 작동 형태에 따른 분류 구분 설명 예시 생성형 AI (Generative AI) 데이터 패턴을 학습해 텍스트, 이미지, 음성, 코드 등 새로운 콘텐츠를 직접 만들어내는 AI ChatGPT, Gemini, Midjourney, Claude 분석형/분류형 AI (Discriminative AI) 입력된 데이터를 비교·분석하여 패턴을 분류하거나 미래 값을 예측하는 AI 스팸 메일 필터링, 추천 시스템(유튜브·넷플릭스), 불량품 감지 자율형 AI (Autonomous AI) 사람의 개입 없이 환경을 인식하고 스스로 판단해 행동하는 AI 자율주행차, 서빙/산업용 로봇 데이터 유형에 따른 분류 구분 설명 예시 텍스트 AI 문서 요약, 번역, 대화, 코드 작성 LLM 기반 모델 시각 AI (Computer Vision) 이미지 인식, 객체 탐지, 이미지/영상 생성 Stable Diffusion, Vision 모델 음성 AI 음성합성(TTS), 음성인식(STT) Siri, Whisper 멀티모달 AI (Multimodal AI) 텍스트, 이미지, 음성, 영상 등 여러 형태의 데이터를 동시에 이해하고 처리하는 통합형 AI Gemini, GPT-4o 📑 AI 관련 용어 정리 기본 개념 및 학습 방식 용어 설명 인공지능 (AI, Artificial Intelligence) 인간의 학습, 추론, 지각 능력 등을 컴퓨터 시스템으로 구현한 포괄적인 기술 개념입니다....
Race condition (경쟁 조건) 관련 글
예전에 스레드를 공부하다가 Lockfree라는 것을 알게 되었었고 일단 뭐든 만들어보자는 마인드로 MPMC부터 무턱대고 만들었었는데, 지금 와서 생각해 보니 남는 것도 없고 너무 얄팍하게 안 것 같아서 차근차근 개념을 이해하기 위해 작성한 글입니다.. 😎 🔎 Race condition “경쟁은 왜 발생하는 것일까?” “경쟁 상태에 데이터를 읽고 쓰면 무슨 일이 벌어질까?“에 대한 명확한 이해가 먼저 필요했습니다. 상황별로 살펴보도록 하겠습니다. Case 1: Read - Read 어떤 한 데이터를 2개 또는 그 이상 되는 스레드가 모두 읽기만 한다면 아무 일도 일어나지 않습니다....
SPSC Queue 만들기
💡 SPSC란? Single-Producer / Single-Consumer 의 약자로 생산자와 소비자가 1:1인 관계를 뜻합니다. 리눅스에서 소켓을 다루다가 스레드간 데이터 전달이 필요해서 알아보니 SPSC Queue가 있다는것을 알게 되었습니다. 제 경우는 클라이언트의 연결을 담당하는는스레드에서 데이터 수신을 담당하는 스레드로 소켓(fd)을 전달해야 했는데 공용 컨테이너와 뮤텍스를 사용하면 스레드가 늘어나면 늘어날수록 오버헤드가 늘 것 같았습니다. 그래서 연결을 담당하는 스레드와 데이터를 수신하는 스레드의 생산-소비가 1:1인 관계에서 뮤텍스 없이 Lock-free 하게 구현해 보려고 합니다. 👍 🚀 구현 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 // spsc_queue....
C++ 개발을 위한 Vim 설치 및 세팅
C++ 공부 해보려고 윈도우에서 소켓을 구현했는데 IO Event(IOCP, epoll, kqueue 등) 라던지, 소켓 내부 구현체가 리눅스와 달라서 직접 리눅스를 설치하고 개발을 해보려고 합니다! 후회중 😭 리눅스는 Arch linux 를 설치했고 데스크탑 환경은 KDE Plasma 를 선택했습니다. vim 기본 설정 처음 vim 을 설치하고 실행하면 정말 아무것도 없습니다. 까만 화면에 커서 하나만 있습니다. 농담이 아닙니다? 기본적으로 파일 인코딩, 라인 넘버, 탭 사이즈 등 기본적인 설정을 먼저 해줄겁니다. vim ~/.vimrc 를 입력하고 기호에 맞게 설정을 추가하세요!...
Windows IOCP 이용해서 서버 만들기 - 1
예전에 소켓을 만들 때 비동기 처리(?)를 select() 함수를 이용해서 처리했었는데, 이 함수를 사용한 서버는 많은 동시 접속자 및 고성능에는 적합하지 않다고 해서 다른 방법을 찾아보기로 했습니다. Blocking 이 있으면 모두 동기식입니다. 왜 적합하지 않을까❓ FD_SET 비효율적인 사용 select() 호출 때마다 파일 디스크립터 배열을 다시 세팅해서 전달 polling 방식 select() 함수 내부에서는 파일 디스크립터를 순회하며 감지함 접속한 클라이언트가 많아질수록 성능이 떨어짐 파일 디스크립터 최대 개수 허용하는 최대 개수가 1024개 따라서 고성능 서버에서는 사용되지 않는다....