본문 바로가기
🤖 AI/AI

🪻구축형 AI 환경 세팅하기 🪻

by 정람지 2024. 4. 8.

어느 날...

깨달은것이다

바로

AI를 안하면

살아남을수없을것임

을.....


🪻apt 업데이트 

APT(Advanced Package Tool)

리눅스 시스템에서 소프트웨어를 설치, 업데이트, 제거하는 명령줄 기반의 패키지 관리 도구

 

 

  1. 패키지 검색: APT는 사용자가 필요로 하는 패키지를 검색
  2. 패키지 설치: APT를 사용하여 시스템에 새로운 소프트웨어 패키지를 설치
  3. 패키지 업그레이드: APT는 현재 시스템에 설치된 패키지의 버전을 최신 버전으로 업그레이드
  4. 패키지 제거: 더 이상 필요하지 않거나 시스템에서 제거하려는 패키지를 APT를 사용하여 제거
  5. 의존성 관리: APT는 패키지간의 의존성을 자동으로 관리다.
  6. 패키지 캐싱: APT는 로컬 캐시를 유지하여 패키지 다운로드를 최적화합

 


 

🪻NVIDIA 드라이버, NVIDIA CUDA 툴킷

NVIDIA 드라이버 및 NVIDIA CUDA 툴킷

NVIDIA 그래픽 카드를 사용하여 GPU 가속 컴퓨팅을 위한 중요한 소프트웨어

 

  1. NVIDIA 드라이버:
    • NVIDIA 그래픽 카드를 제대로 사용하기 위해 해당 카드를 제어하는 소프트웨어인 NVIDIA 드라이버가 필요
    • NVIDIA 드라이버는 그래픽 처리 유닛(GPU)를 컴퓨터의 운영체제와 소프트웨어 간에 통합하는 역할
    • 이 드라이버는 그래픽 카드의 성능을 최적화하고, 그래픽 애플리케이션 및 게임을 실행할 때 그래픽 출력을 관리
  2. NVIDIA CUDA 툴킷:
    • CUDA(Compute Unified Device Architecture)는 NVIDIA가 개발한 GPU 가속 컴퓨팅 플랫폼
    • CUDA를 사용하여 GPU 가속 컴퓨팅을 개발하고 실행하는 데 필요한 모든 도구와 라이브러리를 제공
    • CUDA 프로그래밍을 위한 컴파일러, 라이브러리, 디버거, 프로파일러 등이 포함
    • CUDA C/C++ 및 CUDA Fortran이라는 특수한 프로그래밍 언어를 사용하여 GPU에 대한 프로그램을 작성하는 데 사용
    • C병렬 처리를 수행하기 위해 GPU의 다수의 코어를 활용할 수 있으며, 이는 병렬 작업을 가속화하여 성능을 향상

NVIDIA 드라이버는 그래픽 카드를 운영체제와 소프트웨어 간에 통합하고 관리하는 데 사용

NVIDIA CUDA 툴킷은 GPU 가속 컴퓨팅을 위한 도구와 라이브러리를 제공하여 개발자가 CUDA 프로그래밍을 할 수 있도록 지원


 

🪻gcc compiler 설치 

GCC(GNU Compiler Collection)

여러 프로그래밍 언어를 위한 오픈 소스 컴파일러이며, C, C++, Objective-C, Fortran, Ada 및 Go와 같은 다양한 언어를 지원

 

- 모델이 C,C++같은 언어로 작성된 부분을 포함하기 때문에 컴파일러가 필요
- gcc 컴파일러, g++ (C++ 컴파일러), make (빌드 관리 도구) 등 소프트웨어 빌드에 필요한 기본 도구들이 포함

 


🪻kernel headers 설치

커널 헤더(kernel headers)

리눅스 커널과 관련된 헤더 파일들의 모음

이 헤더 파일들은 시스템 프로그램이나 커널 모듈 등을 개발할 때 필요한 정보와 함수를 정의

 

- <linux/*.h>:

리눅스 커널의 주요 기능과 데이터 구조에 대한 정보를 포함하는 헤더 파일들

시스템 호출, 프로세스 관리, 메모리 관리, 디바이스 드라이버, 네트워킹, 파일 시스템 등과 관련된 함수와 구조체를 정의합니다.

 

- <asm/*.h>:

아키텍처별로 다른 하드웨어 관련 정보를 정의하는 헤더 파일들

 

시스템의 커널과 직접적으로 상호작용하는 소프트웨어를 개발하거나 컴파일할 때 필요음


🪻nvidia 드라이버 설치

NVIDIA 드라이버

NVIDIA 그래픽 카드 및 그래픽 프로세서 유닛(GPU)와 호스트 컴퓨터 간의 통신을 관리하는 소프트웨어

GPU의 성능을 최대한 발휘하고, 그래픽 작업을 효율적으로 처리

 

하드웨어 호환성:

NVIDIA의 다양한 그래픽 카드와 GPU에 대한 지원을 제공

이는 최신 게임, 그래픽 디자인 소프트웨어, 과학 및 엔지니어링 응용 프로그램 등을 실행하는 데 필요

 

그래픽 가속:

그래픽 작업을 가속화하여 더 나은 성능과 더 빠른 그래픽 렌더링을 제공

이는 게임, 영상 편집, 3D 모델링 및 시뮬레이션 등에서 중요한 역할

 

CUDA 지원:

CUDA(Compute Unified Device Architecture)를 지원

 

OpenGL 및 DirectX 호환성:

OpenGL과 DirectX와 같은 그래픽 API를 지원하여 다양한 그래픽 애플리케이션 및 게임을 실행

 

모니터 및 디스플레이 관리:

모니터와 디스플레이를 관리하고 최적화하여 최상의 화면 품질과 성능을 제공

 

 


🪻cuda 설치   

CUDA(Compute Unified Device Architecture)

NVIDIA에서 개발한 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델

NVIDIA GPU를 사용하여 병렬 컴퓨팅 작업을 수행하는 데 사용

CUDA를 사용하면 GPU를 일반적인 CPU 외 병렬 컴퓨팅에 사용할 수 있으며, 이를 통해 많은 양의 데이터를 효율적으로 처리하고 빠르게 계산할 수 있음

 

 

병렬 컴퓨팅 아키텍처:

CUDA는 GPU의 병렬 처리 능력을 활용하여 수천 개의 스레드를 동시에 실행

계산 집약적인 작업을 효율적으로 처리

 

CUDA 코어:

CUDA는 GPU 내에 있는 작은 연산 단위인 CUDA 코어를 사용하여 병렬 계산을 수행

이러한 CUDA 코어는 많은 수가 있으며, 여러 스레드가 동시에 실행될 수 있도록 설계

 

CUDA 프로그래밍 모델:

CUDA는 C 언어를 기반으로 하는 프로그래밍 모델을 제공

GPU에서 실행할 코드를 작성하고 제어

CUDA 프로그래밍 모델은 커널 함수를 사용하여 GPU에서 실행되는 코드를 정의하고 호스트와 디바이스 메모리 간의 데이터 전송을 관리

 

CUDA 런타임 및 드라이버:

CUDA 개발을 위해 NVIDIA는 CUDA 런타임과 드라이버를 제공

CUDA 런타임은 CUDA 애플리케이션을 실행할 때 필요한 라이브러리와 도구를 제공하며, CUDA 드라이버는 GPU와 호스트 컴퓨터 간의 통신을 관리

 

CUDA SDK 및 도구:

NVIDIA는 CUDA 개발을 지원하기 위한 다양한 SDK(소프트웨어 개발 키트)와 도구를 제공

러한 SDK와 도구는 CUDA를 사용하여 고성능 병렬 애플리케이션을 개발하는 데 도움

 

12.1.0 버전


🪻cuDNN 12.1 설치  

 

cuDNN( CUDA Deep Neural Network library)

NVIDIA가 개발한 딥 뉴럴 네트워크를 위한 GPU 가속화 라이브러리

딥 뉴럴 네트워크 모델의 효율적인 학습과 추론을 위해 최적화

딥 뉴럴 네트워크의 핵심 연산인 컨볼루션, 풀링, 정규화 등을 GPU에서 효율적으로 실행할 수 있도록 최적화

 

 

고속 딥 뉴럴 네트워크 연산:

cuDNN은 최적화된 컨볼루션, 풀링, 정규화 등의 딥 뉴럴 네트워크 연산을 제공하여 높은 성능을 달성할 수 있음

이러한 연산은 GPU의 병렬 처리 능력을 최대한 활용하여 빠르게 처리

 

하드웨어 가속화

cuDNN은 NVIDIA의 GPU를 사용하여 딥 뉴럴 네트워크 모델을 가속화

GPU를 사용하면 대규모 데이터셋 및 복잡한 모델에 대한 학습 및 추론이 더욱 빠르고 효율적으로 수행

 

다양한 딥 뉴럴 네트워크 모델 지원:

cuDNN은 다양한 딥 뉴럴 네트워크 모델을 지원

컨볼루션 신경망(CNN), 순환 신경망(RNN), 변환자(Transformer) 등 다양한 유형의 모델을 효율적으로 처리할 수 있음

 

쉬운 통합:

cuDNN은 CUDA 프레임워크와 쉽게 통합될 수 있음

이를 통해 딥 뉴럴 네트워크 모델의 GPU 가속화를 간편하게 구현할 수 있음


🪻miniconda 설치  

Miniconda

파이썬 기반의 오픈 소스 패키지 관리자이자 가상 환경 관리자

Anaconda의 미니멀 버전으로, 파이썬과 필요한 패키지만을 포함하고 있어 더 가벼우면서도 유연한 환경을 제공

 

 

패키지 관리: Miniconda는 conda 패키지 관리자를 제공하여 파이썬 패키지 및 종속성을 쉽게 설치, 업데이트, 관리할 수 있습니다. Conda는 다양한 패키지를 포함하는 기본 저장소인 Anaconda Cloud에서 패키지를 설치할 수 있습니다.

 

가상 환경: Miniconda를 사용하면 가상 환경을 만들어 여러 프로젝트 및 의존성을 격리할 수 있습니다. 각 가상 환경은 독립적으로 관리되며, 서로 다른 버전의 패키지를 설치하여 각 프로젝트에 필요한 환경을 설정할 수 있습니다.

 

플랫폼 독립적: Miniconda는 다양한 운영 체제에서 사용할 수 있습니다. Windows, macOS, Linux 등 다양한 플랫폼을 지원하며, 각 운영 체제에 맞게 파이썬 및 패키지를 설치할 수 있습니다.

 

경량화: Miniconda는 Anaconda보다 더 가벼운 설치 파일을 제공합니다. 필요한 최소한의 요소만을 포함하고 있어, 빠르고 간편하게 설치할 수 있습니다.


🪻docker 설치  

도커(Docker)

컨테이너화된 응용 프로그램을 개발, 배포 및 실행하기 위한 오픈 소스 플랫폼

컨테이너는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 경량화된 환경을 제공하므로, 독립적으로 실행

이를 통해 개발자는 어떤 환경에서든 일관되게 응용 프로그램을 실행할 수 있으며, 응용 프로그램의 배포 및 관리가 간소화

 

 

컨테이너화:

도커는 응용 프로그램, 런타임, 라이브러리 및 종속성을 포함하는 컨테이너를 제공

가상화된 환경을 제공하며, 호스트 시스템과 독립적으로 실행

 

이식성:

도커 컨테이너는 호스트 시스템과 무관하게 동일한 환경에서 실

개발 환경과 프로덕션 환경 간의 일관성을 유지할 수 있음

 

경량화:

도커 컨테이너는 가상 머신에 비해 더 가볍고 빠르며, 빠른 시작 및 종료가 가능

 

확장성:

도커는 여러 컨테이너를 클러스터링하고 관리할 수 있는 도구를 제공

응용 프로그램을 쉽게 확장하고 관리할 수 있음

 

자동화:

도커는 응용 프로그램의 빌드, 테스트, 배포 및 관리를 자동화하는 기능을 제공

개발 및 운영 프로세스를 간소화하고 효율적으로 관리할 수 있음


🪻npm 설치  

npm(Node Package Manager)

JavaScript 언어를 위한 패키지 관리자입니다. Node.js를 통해 JavaScript 코드를 실행하는 환경에서 주로 사용됩니다. npm은 JavaScript 프로젝트에서 필요한 다양한 패키지를 손쉽게 설치하고 관리할 수 있도록 도와줍니다.

 

 

패키지 설치:

npm을 사용하여 JavaScript 프로젝트에서 필요한 패키지를 손쉽게 설치

 

의존성 관리:

프로젝트에서 사용하는 패키지들 간의 의존성을 자동으로 해결하고 관리

 

버전 관리:

npm은 패키지의 버전을 관리하고 업데이트할 수 있는 기능을 제공

 

스크립트 실행:

npm을 사용하여 프로젝트에서 정의된 스크립트를 실행

 

사용자 정의 패키지:

개발자는 자신이 작성한 코드를 패키지로 만들어 npm 레지스트리에 배포

 


🪻node.js 설치  

Node.js

Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 환경

JavaScript 코드를 서버 측에서 실행

 

 

단일 스레드 이벤트 루프:

Node.js는 단일 스레드 이벤트 루프를 기반으로 동작

 

비동기식 프로그래밍:

Node.js는 비동기식 프로그래밍 모델을 채택하여 여러 작업을 병렬로 처리.

 

모듈 시스템:

Node.js는 CommonJS와 함께 모듈 시스템을 지원하여 코드를 모듈화하고 재사용

 

내장 HTTP 서버 라이브러리:

Node.js에는 HTTP 서버를 만들기 위한 내장 라이브러리가 포함

 

높은 확장성:

Node.js는 비동기식 및 이벤트 기반 아키텍처로 인해 많은 동시 연결을 처리

 

npm(Node Package Manager):

Node.js는 npm을 통해 수많은 패키지-이브러리, 프레임워크, 도구 등을 쉽게 설치하고 관리


오류 왜 이렇게 많이 나는데

그대로했다고

 

하지만 내 문제겟

컴퓨터는틀리지않

 

 

npm/docker/nodejs 다음에계속...

 

sleep(tonight);