기본 콘텐츠로 건너뛰기

Mac Studio Ultra - 업무 활용기(Jupyter Lab, Notebook, Hub) - 1탄

Mac Studio Ultra - 업무 활용기(Jupyter Lab, Notebook, Hub) - 1탄


 나는 AI, ML 기술을 여러가지 업무에 적용하는 일을 하고 있다. 

팀원은 5명이고, 대부분 맥북프로 2019년식을 갖고 있다. 메모리도 32기가로 높은 편이나

맥북의 가장 큰 단점 GPU가 없다는 것.. 있지만 무용지물..

그래서 지금 까지는 대부분 CPU 기반으로 알고리즘을 구동했다. 시간이 오래 걸려도 참고...

Colab 도 써보고... 

드디어 2023년 Mac Studio Ultra를 구매했다. 

모든 팀원들이 이 환경에서 개발할 수 있도록 환경을 구축 하고 있다.

일단 너무 기쁜데, 애플이 자랑하는 만큼 성능이 되거나 5천만원짜리 머신러닝 서버를 살 수 있으면 좋겠다.


0. 개요

  • Spec & 버전
    • Mac OS Ventura 13.1
    • CPU 20 Core, GPU : 64 Core, Neural Engine : 32 Core, RAM 128G, HDD : 4TB
    • 10기가 이더넷... 그러나 회사 스위치 1기가
  • 사전 작업
    • OS 최신 업데이트 실시
    • xcode 등 developer tool 설치

1. 설치 환경

  • IP
    고정 IP를 할당 받아서 사용했다.

  • User 생성
    사용자비밀번호비고
    jupyter1dfdfd......1관리자

  • 공유 설정
    • 웹으로 지원할 거라 따로 공유는 설정하지 않았다.

2. 설치

2.1 필수 소프트웨어 설치

2.1.1 Rosetta & Xcode Command Line Tools & Chrome 설치

  • Rosetta 2설치 : https://musclebear.tistory.com/127
    // 1. 라이센스 동의 필요
    $ softwareupdate --install-rosetta
    
    // 2. 라이선스 자동 동의
    $ /usr/sbin/softwareupdate --install-rosetta --agree-to-license
    
    
  • Xcode Command Line Tools
    $ xcode-select --install
    

2.1.2 iterm2

  • https://iterm2.com/
  • iterm2에서 한글 깨짐 해결 : 애플의 문자셋<NFC>과 MS<NFD>의 문자셋이 다름
    Menu > Preference > Profiles > Text 의 하단에 Unicode normalization from : [NFC]로 변경
  • 필요시 폰트 설치

2.1.3 homebrew

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 
$ brew update
$ brew upgrade
  • 표준 사용자 사용하도록 그룹 추가 및 brew 그룹 변경
    1. 설정 > 사용자 및 그룹 에서 그룹 생성 brew
    2. brew 그룹에 표준 사용자 그룹 추가
    3. brew 디렉토리 그룹 변경
      $ sudo chgrp -R brew /opt/homebrew
      

2.1.4 wget & curl & openssl

$ brew install wget
$ brew install curl
$ brew install openssl

2.1.5 zsh & oh-my-szh

$ brew install zsh
$ brew upgrade zsh
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" 
$ vi ~/.zshrc
  ZSH_THEME="eastwood" 로 변경 후 저장
$ source ~/.zshrc

2.1.6 pyenv, pyenv-virtualenv & python & poetry

2.1.6.1 pyenv & python 설치
$ brew install pyenv
$ pyenv install --list
$ pyenv install 3.11.1
$ pyenv global 3.11.x
$ pyenv local 3.11.x
2.1.6.3 pyenv-virtualenv & 가상환경 만들기
$ brew install pyenv-virtualenv
... installing....

$ vi ~/.zshrc
-- 아래 추가 : 이미 있을 수 있음 --
# pyenv command
eval "$(pyenv init -)" 

# pyenv-virtualenv command
eval "$(pyenv virtualenv-init -)" 
$ source ~/.zshrc

# create virtual environment
$ pyenv virtualenv PYTHON-VERSION ENVIRONMENT-NAME

# check available virtual environments in local
$ pyenv virtualenvs

# delete VIRTUAL ENVIRONMENT
$ pyenv uninstall ENVIRONMENT-NAME

# activate virtual environment
$ pyenv activate ENVIRONMENT-NAME

# GET OUT OF VIRTUAL ENVIRONMENT
$ pyenv deactivate
2.1.6.3 python 필수 라이브러리
  • 가상환경을 활성화 하고 하면 된다. 패키지는 가상환경에만 적용된다.
# install and upgrade pip
$ python3 -m pip install --upgrade pip  혹은 
$ pip install --upgrade pip

# check available packages
$ pip list
  필요한 패키지는 가상환경에서 다시 설치해야 한다.

# 필수 패키지 
$ pip install package1, package2, ...
2.1.6.4 poetry
  • 목적 : 프로젝트<디렉토리>별 패키지를 설치하고 관리해준다.
  • poetry 설치
    • # poetry curl 로 최신버전 설치하기
      $ curl -sSL https://install.python-poetry.org | python3 -
      
      # brew 로 설치하기
      $ brew install poetry
      
  • python 3.10.4 까지는 되나, 3.11.x 부터 안된다. poetry가 아직 python 3.11.x 는 지원하지 않음
    • 문제
      에러내용 : from cleo import Application as BaseApplication 
      
    • 해결
      $ cd ~/.poetry/lib/poetry/_vendor
      $ cp -R py3.10 py3.11
      
  • poetry project 생성
    $ mkdir -p ~/test/poetry/prj1
    $ cd ~/test/poetry/prj1
    $ poetry init   --> pyproject.toml 이 생김
    $ poetry shell  --> 이걸로 해야 됨.
    $ poetry add fastapi aiohttp  ==> 패키지명에 [ 문자, 공백이 있으면 " 로 묶어서 설치
    
    $ poetry shell
    > 가상환경 안에서는 이미 활성화되어있어서 메시지 발생 : Virtual environment already activated: /Users/keunsookim/.pyenv/versions/3.11.1/envs/py3.11.1
    
2.1.6.4 pyenv, pyenv-virtualenv, poetry 권장 사용법 <python 3.11.1 버전 기준>
  • 1) pyenv-virtualenv 로 파이썬 버전에 맞는 가상환경 생성 및 활성화
       $ pyenv virtualenv 3.11.1 py3.11.1  ==> local 사용자에게 만들어짐
       $ pyenv local py3.11.1 혹은 pyenv activate py3.11.1
    
    2) poetry 로 프로젝트 생성 --> 디렉토리도 자동생성된다.
       $ poetry new poetry-prj1
       $ cd poetry-prj1
       $ poetry shell
       $ poetry add pandas, fastapi, hypercorn, aiohttp   < -D 옵션을 추가하면 개발환경에서만 사용될 패키지를 설치한다 >
       $ poetry show --tree
       $ poetry show --tree --no-dev
       $ poetry remove fastapi
    
    3) poetry package install & update
       $ poetry install
       $ poetry update
    
    4) visual studio code에서 편집하기
       $ code .
       - vscode 에서도 프로젝트 폴더에 가상환경을 선택해서 만들 수 있다. https://code.visualstudio.com/docs/python/environments
    
    5) 실행하기
       $ hypercorn myapp:app --bind 0.0.0.0:8080  <fastapi 기준>
    
    6) zshrc에 alias 추가
       $ vi ~/.zshrc
         alias chpy='pyenv activate py3.11.1'  입력하고 저장 후 vi 종료
       $ source ~/.zshrc
    
    

2.1.7 node, npm, yarn, pip

  • $ brew install node  : node, npm 설치될 것임.
    $ brew install npm
    $ brew install yarn
    $ python -m pip install --upgrade pip
    

2.1.8 aws cli 및 configure for all users

  • $ mkdir -p ~/devtools/aws
    $ cd ~/devtools/aws
    $ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" 
    $ sudo installer -pkg AWSCLIV2.pkg -target /
    ... install AWSCLIV3.pkg ...
    $ aws configure
    > AWS Access Key ID [None]: AKIA5ZEG4ZROZ7XPEBXA
    > AWS Secret Access Key [None]: KEY(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)  [ 잘 생각 해보셔 ]
    > Default region name [None]: ap-northeast-2
    > Default output format [None]: json
    

2.1.9 subversion & git

  • Subversion <SVN>
    $ brew search subversion
    $ brew install subversion
    $ brew install upgrade subversion  ==> 설치된 것 업그레이드
    

2.1.10 docker <보완 필요>

  • docker 설치

2.1.40 기타 S/W

2.1.99 마무리

  • $ brew doctor
    $ brew update
    $ brew upgrade
    $ brew topgrade  : 최신버전으로 변경
    

2.2 머신러닝 소프트웨어 설치<feat. pyenv>

  • jupyter lab, notebook

3. 접속 방법

  • Terminal via SSH
  • Remote Desktop
  • Jupyter Notebook

9. 참고자료


2탄에서는 실제 Jupyter를 웹으로 제공하기 위한 방법을 기록해보고자 한다.

댓글

이 블로그의 인기 게시물

[2024-10-19] iPhone, iPad에서 ChatGPT로 PDF 생성시 한글 깨짐 해결 방법

iPhone, iPad에서 ChatGPT로 PDF 생성 시 한글 깨짐 해결 방법

[quaser.dev][2014-09-14] 윈도우즈(10, 64bit)에 개발환경 설정하기

[quaser.dev][2014-09-14] 윈도우즈(10, 64bit)에 개발환경 설정하기

[2025-04-16(수)] OpenAI gpt-4.1 시리즈 발표, Anthropic Claude에 대한 생각

OpenAI gpt-4.1 시리즈 발표, Anthropic Claude에 대한 생각 안녕하세요. 클스 입니다. 4/15일자로 openai가 gpt-4.1 시리즈를 발표 했습니다. 현재는 api로만 사용가능합니다. 점차 웹/앱 사용자에게 오픈 될거라 생각 됩니다. 비용상 문제로 4.1-mini, nano를 사용해서 chatbot을 만들어 보고 있습니다. 4o 시리즈 보다는 확실히 빠르고, 답변의 정확도는 올라간 것 같습니다. 앤트로픽 클로드와 비교를 많이 하는데, 업무 시스템 혹은 AI 솔루션을 개발하는 입장에서는 어떤 생태계를 제공하는가가 주요한 결정 입니다. AI관련 인력을 충분히 보유한 회사의 경우는 어떤걸 사용해도 좋을 결과를 가지겠지만 일반적인 챗봇 개발 절차를 보면 다음과 같이 볼 수 있습니다. 1. 문서를 준비한다. 대부분 pdf, text, markdown 2. 문서를 파싱해서 vectordb에 올린다.     - 별도 벡터디비 구성 필요. 어떤 db를 선택할지 고민 필요     - 어떤 Parser를 사용할지, 텍스트 오버래핑은 얼마가 적당한지 고민 필요        (회사의 문서가 워낙 많고, 다양하면 하나하나 테스트 해서 좋은걸 선택하는 것이 어렵다)     - 유사도 측정은 어떤 알고리즘을 써야할지 고민 필요     - llamaindex도 고민해야 함. 3. RAG flow를 만든다.     - langchain을 쓸지, 각 AI 벤더에서 제공하는 sdk를 쓸지 고민 필요       (대부분 락인이 되지 않으려면 langchain을 사용하면 좋지만, 벤더에 특화면 기능 적용이 늦음) 4. 챗봇 UI 앱을 만든다.     - 답변이 text 로 구성되다 보니. 그래프, 이미지등 복합적인 컨텐츠를 재배치 하여 표현하기 상당히 어렵네요. (이건 제가 실력이 모자라서 .. 패스) ...