#!/usr/bin/env bash
set -euxo pipefail
echo "๐ MLX with CUDA ์์ ์ค์น ์์..."
## 0) ๊ธฐ๋ณธ ์์กด์ฑ ์ค์น
echo "๐ฆ ๊ธฐ๋ณธ ์์กด์ฑ ํจํค์ง ์ค์น..."
sudo apt-get update -y
sudo apt update -y
sudo apt-get install -y build-essential git wget curl python3.10-venv \\
pkg-config libopenblas-dev liblapack-dev
sudo apt-get install -y liblapack-dev libatlas-base-dev gfortran
sudo apt-get install -y liblapack-dev liblapack3 liblapack-dev liblapacke-dev
## 1) NVIDIA CUDA 12.4 & cuBLAS ์ค์น
echo "๐ง NVIDIA CUDA 12.4 ์ค์น..."
sudo apt-get install -y gnupg ca-certificates
sudo mkdir -p /etc/apt/keyrings
curl -fsSL <https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub> \\
| sudo tee /etc/apt/keyrings/cuda.asc
echo "deb [signed-by=/etc/apt/keyrings/cuda.asc] \\
<https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/> /" \\
| sudo tee /etc/apt/sources.list.d/cuda.list
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4 \\
libcublas-12-4 libcublas-dev-12-4
# CUDA ํ๊ฒฝ๋ณ์ ์ค์
export CUDA_HOME=/usr/local/cuda-12.4
echo 'export CUDA_HOME=/usr/local/cuda-12.4' >> ~/.bashrc
echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
## 2) ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ ์ค์
echo "๐ Python ๊ฐ์ํ๊ฒฝ ์ค์ ..."
# ๊ธฐ์กด ๊ฐ์ํ๊ฒฝ์ด ์์ผ๋ฉด ์ ๊ฑฐ
if [ -d ~/mlxenv ]; then
echo "โ ๏ธ ๊ธฐ์กด mlxenv ๊ฐ์ํ๊ฒฝ ์ ๊ฑฐ..."
rm -rf ~/mlxenv
fi
python3 -m venv ~/mlxenv
source ~/mlxenv/bin/activate
python3 -m pip install --upgrade pip
## 3) MLX ์์ค ์์ ์ ๋ฆฌ ๋ฐ ๋ค์ด๋ก๋
echo "๐งน MLX ์์ค ์์ ์ ๋ฆฌ..."
# ๊ธฐ์กด MLX ๋๋ ํ ๋ฆฌ ์์ ์ ๊ฑฐ
if [ -d ~/mlx ]; then
echo "โ ๏ธ ๊ธฐ์กด MLX ๋๋ ํ ๋ฆฌ ์ ๊ฑฐ..."
rm -rf ~/mlx
fi
# pip ์บ์ ์ ๋ฆฌ
python3 -m pip cache purge
# MLX ์์ค ๋ค์ด๋ก๋
git clone <https://github.com/ml-explore/mlx.git> ~/mlx
cd ~/mlx
# ๋น๋ ๋๋ ํ ๋ฆฌ ๋ฐ ์บ์ ์์ ์ ๋ฆฌ
echo "๐๏ธ ๋น๋ ์บ์ ์์ ์ ๋ฆฌ..."
rm -rf build/ dist/ *.egg-info
git clean -fdx
find . -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true
find . -name "*.pyc" -delete 2>/dev/null || true
# ์์คํ
์์ ํ์ผ ์ ๋ฆฌ
sudo rm -rf /tmp/pip-* 2>/dev/null || true
## 4) CUDA ํ๊ฒฝ๋ณ์ ์ฌ์ค์ (๋น๋ ์ ํ์ธ)
echo "๐ CUDA ํ๊ฒฝ ํ์ธ..."
export CUDA_HOME=/usr/local/cuda-12.4
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
# CUDA ์ค์น ํ์ธ
if ! command -v nvcc &> /dev/null; then
echo "โ CUDA ์ปดํ์ผ๋ฌ(nvcc)๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค!"
exit 1
fi
echo "โ
CUDA ๋ฒ์ : $(nvcc --version | grep 'release' | awk '{print $5}' | cut -d',' -f1)"
# BLAS/LAPACK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ธ
echo "๐ BLAS/LAPACK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ธ..."
ls -la /usr/lib/x86_64-linux-gnu/libopenblas.so* || {
echo "โ OpenBLAS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค!"
exit 1
}
ls -la /usr/include/x86_64-linux-gnu/cblas.h || {
echo "โ CBLAS ํค๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค!"
exit 1
}
## 5) MLX + CUDA ๋น๋ (์ฑ๊ณตํ ์ค์ ์ฌ์ฉ)
echo "๐จ MLX CUDA ๋น๋ ์์..."
CMAKE_ARGS="-DMLX_BUILD_CUDA=ON \\
-DCUDAToolkit_ROOT=$CUDA_HOME \\
-DCMAKE_CUDA_COMPILER=$CUDA_HOME/bin/nvcc \\
-DBLAS_LIBRARIES=/usr/lib/x86_64-linux-gnu/libopenblas.so \\
-DLAPACK_LIBRARIES=/usr/lib/x86_64-linux-gnu/libopenblas.so \\
-DBLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu \\
-DLAPACK_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu" \\
python3 -m pip install . -v --config-settings cmake.args="-j$(nproc)"
## 6) ์ถ๊ฐ ํจํค์ง ์ค์น
echo "๐ฆ ์ถ๊ฐ ํจํค์ง ์ค์น..."
pip install --upgrade transformers accelerate huggingface_hub sentencepiece
## 7) ์ค์น ํ์ธ
echo "๐งช MLX ์ค์น ํ์ธ..."
python3 -c "
import mlx.core as mx
print('โ
MLX Core ๊ฐ์ ธ์ค๊ธฐ ์ฑ๊ณต')
print('๐ MLX ๋ฒ์ :', mx.__version__)
try:
print('๐ CUDA ์ฌ์ฉ ๊ฐ๋ฅ:', mx.metal.is_available())
except:
print('โ ๏ธ CUDA ์ํ ํ์ธ ๋ถ๊ฐ (์ ์์ผ ์ ์์)')
print('๐ฏ MLX ๊ธฐ๋ณธ ํ
์คํธ:')
x = mx.array([1, 2, 3])
print(' ๋ฐฐ์ด ์์ฑ ์ฑ๊ณต:', x)
print(' ๊ณ์ฐ ํ
์คํธ:', mx.sum(x))
"
## 8) ํ๊ฒฝ ์ ๋ณด ์ถ๋ ฅ
echo ""
echo "๐ MLX CUDA ๋น๋ ์๋ฃ!"
echo "๐ ์ค์น ์ ๋ณด:"
echo " - CUDA Home: $CUDA_HOME"
echo " - Python ๊ฐ์ํ๊ฒฝ: ~/mlxenv"
echo " - MLX ์์ค: ~/mlx"
echo ""
echo "๐ง ์ฌ์ฉ๋ฒ:"
echo " 1. ๊ฐ์ํ๊ฒฝ ํ์ฑํ: source ~/mlxenv/bin/activate"
echo " 2. Python์์ ์ฌ์ฉ: import mlx.core as mx"
echo ""
echo "โ
์ค์น ์๋ฃ!"
v2
#!/usr/bin/env bash
set -euxo pipefail
echo "๐ MLX with CUDA ์์ ์ค์น ์์..."
## 0) ๊ธฐ๋ณธ ์์กด์ฑ ์ค์น
echo "๐ฆ ๊ธฐ๋ณธ ์์กด์ฑ ํจํค์ง ์ค์น..."
sudo apt-get update -y
sudo apt update -y
sudo apt-get install -y build-essential git wget curl python3.10-venv \\
pkg-config libopenblas-dev liblapack-dev
sudo apt-get install -y liblapack-dev libatlas-base-dev gfortran liblapacke-dev
## 1) NVIDIA CUDA 12.4 & cuBLAS ์ค์น
echo "๐ง NVIDIA CUDA 12.4 ์ค์น..."
sudo apt-get install -y gnupg ca-certificates
sudo mkdir -p /etc/apt/keyrings
curl -fsSL <https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub> \\
| sudo tee /etc/apt/keyrings/cuda.asc
echo "deb [signed-by=/etc/apt/keyrings/cuda.asc] \\
<https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/> /" \\
| sudo tee /etc/apt/sources.list.d/cuda.list
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4 \\
libcublas-12-4 libcublas-dev-12-4
# CUDA ํ๊ฒฝ๋ณ์ ์ค์
export CUDA_HOME=/usr/local/cuda-12.4
echo 'export CUDA_HOME=/usr/local/cuda-12.4' >> ~/.bashrc
echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
## 2) ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ ์ค์
echo "๐ Python ๊ฐ์ํ๊ฒฝ ์ค์ ..."
# ๊ธฐ์กด ๊ฐ์ํ๊ฒฝ์ด ์์ผ๋ฉด ์ ๊ฑฐ
if [ -d ~/mlxenv ]; then
echo "โ ๏ธ ๊ธฐ์กด mlxenv ๊ฐ์ํ๊ฒฝ ์ ๊ฑฐ..."
rm -rf ~/mlxenv
fi
python3 -m venv ~/mlxenv
source ~/mlxenv/bin/activate
python3 -m pip install --upgrade pip
## 3) MLX ์์ค ์์ ์ ๋ฆฌ ๋ฐ ๋ค์ด๋ก๋
echo "๐งน MLX ์์ค ์์ ์ ๋ฆฌ..."
# ๊ธฐ์กด MLX ๋๋ ํ ๋ฆฌ ์์ ์ ๊ฑฐ
if [ -d ~/mlx ]; then
echo "โ ๏ธ ๊ธฐ์กด MLX ๋๋ ํ ๋ฆฌ ์ ๊ฑฐ..."
rm -rf ~/mlx
fi
# pip ์บ์ ์ ๋ฆฌ
python3 -m pip cache purge
# MLX ์์ค ๋ค์ด๋ก๋
git clone <https://github.com/ml-explore/mlx.git> ~/mlx
cd ~/mlx
# ๋น๋ ๋๋ ํ ๋ฆฌ ๋ฐ ์บ์ ์์ ์ ๋ฆฌ
echo "๐๏ธ ๋น๋ ์บ์ ์์ ์ ๋ฆฌ..."
rm -rf build/ dist/ *.egg-info
git clean -fdx
find . -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true
find . -name "*.pyc" -delete 2>/dev/null || true
# ์์คํ
์์ ํ์ผ ์ ๋ฆฌ
sudo rm -rf /tmp/pip-* 2>/dev/null || true
## 4) CUDA ํ๊ฒฝ๋ณ์ ์ฌ์ค์ (๋น๋ ์ ํ์ธ)
echo "๐ CUDA ํ๊ฒฝ ํ์ธ..."
export CUDA_HOME=/usr/local/cuda-12.4
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
# CUDA ์ค์น ํ์ธ
if ! command -v nvcc &> /dev/null; then
echo "โ CUDA ์ปดํ์ผ๋ฌ(nvcc)๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค!"
exit 1
fi
echo "โ
CUDA ๋ฒ์ : $(nvcc --version | grep 'release' | awk '{print $5}' | cut -d',' -f1)"
# BLAS/LAPACK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ธ
echo "๐ BLAS/LAPACK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ธ..."
ls -la /usr/lib/x86_64-linux-gnu/libopenblas.so* || {
echo "โ OpenBLAS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค!"
exit 1
}
ls -la /usr/include/x86_64-linux-gnu/cblas.h || {
echo "โ CBLAS ํค๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค!"
exit 1
}
# LAPACK ํค๋ ํ์ธ ๋ฐ ๋งํฌ ์์ฑ
echo "๐ง LAPACK ํค๋ ํ์ธ ๋ฐ ์ค์ ..."
if [ ! -f /usr/include/lapack.h ]; then
echo "๐ lapack.h ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ..."
LAPACK_HEADER=$(find /usr -name "lapack.h" -type f 2>/dev/null | head -1)
if [ -n "$LAPACK_HEADER" ]; then
sudo ln -sf "$LAPACK_HEADER" /usr/include/lapack.h
echo "โ
lapack.h ๋งํฌ ์์ฑ: $LAPACK_HEADER -> /usr/include/lapack.h"
else
echo "โ ๏ธ lapack.h๋ฅผ ์ฐพ์ ์ ์์ด cblas.h๋ก ๋์ฒด ๋งํฌ ์์ฑ"
sudo ln -sf /usr/include/x86_64-linux-gnu/cblas.h /usr/include/lapack.h
fi
else
echo "โ
lapack.h๊ฐ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค."
fi
## 5) MLX + CUDA ๋น๋ (์ฑ๊ณตํ ์ค์ ์ฌ์ฉ)
echo "๐จ MLX CUDA ๋น๋ ์์..."
CMAKE_ARGS="-DMLX_BUILD_CUDA=ON \\
-DCUDAToolkit_ROOT=$CUDA_HOME \\
-DCMAKE_CUDA_COMPILER=$CUDA_HOME/bin/nvcc \\
-DBLAS_LIBRARIES=/usr/lib/x86_64-linux-gnu/libopenblas.so \\
-DLAPACK_LIBRARIES=/usr/lib/x86_64-linux-gnu/libopenblas.so \\
-DBLAS_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu \\
-DLAPACK_INCLUDE_DIRS=/usr/include/x86_64-linux-gnu \\
-DCMAKE_C_FLAGS='-I/usr/include -I/usr/include/x86_64-linux-gnu' \\
-DCMAKE_CXX_FLAGS='-I/usr/include -I/usr/include/x86_64-linux-gnu'" \\
python3 -m pip install . -v --config-settings cmake.args="-j$(nproc)"
## 6) ์ถ๊ฐ ํจํค์ง ์ค์น
echo "๐ฆ ์ถ๊ฐ ํจํค์ง ์ค์น..."
pip install --upgrade transformers accelerate huggingface_hub sentencepiece mlx-lm
# Hugging Face CLI ์ค์น ํ์ธ ๋ฐ PATH ์ค์
echo "๐ง Hugging Face CLI ์ค์ ..."
if ! command -v huggingface-cli &> /dev/null; then
echo "โ ๏ธ huggingface-cli PATH ์ค์ ..."
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
fi
# CLI ์ค์น ํ์ธ
if command -v huggingface-cli &> /dev/null; then
echo "โ
Hugging Face CLI ์ค์น ํ์ธ ์๋ฃ"
huggingface-cli --version
else
echo "โ Hugging Face CLI ์ค์น ์คํจ"
fi
## 7) ์ค์น ํ์ธ
echo "๐งช MLX ์ค์น ํ์ธ..."
python3 -c "
import mlx.core as mx
print('โ
MLX Core ๊ฐ์ ธ์ค๊ธฐ ์ฑ๊ณต')
print('๐ MLX ๋ฒ์ :', mx.__version__)
print('๐ฏ MLX ๊ธฐ๋ณธ ํ
์คํธ:')
x = mx.array([1, 2, 3])
print(' ๋ฐฐ์ด ์์ฑ ์ฑ๊ณต:', x)
print(' ๊ณ์ฐ ํ
์คํธ:', mx.sum(x))
print('๐ฅ ๋๋ฐ์ด์ค ์ ๋ณด:', mx.default_device())
# CUDA ํ์ธ
try:
import subprocess
result = subprocess.run(['nvidia-smi'], capture_output=True, text=True)
if result.returncode == 0:
print('โ
NVIDIA GPU ๊ฐ์ง๋จ')
else:
print('โ ๏ธ NVIDIA GPU ํ์ธ ๋ถ๊ฐ')
except:
print('โ ๏ธ nvidia-smi ์คํ ๋ถ๊ฐ')
"
## 8) ํ๊ฒฝ ์ ๋ณด ์ถ๋ ฅ
echo ""
echo "๐ MLX CUDA ๋น๋ ์๋ฃ!"
echo "๐ ์ค์น ์ ๋ณด:"
echo " - CUDA Home: $CUDA_HOME"
echo " - Python ๊ฐ์ํ๊ฒฝ: ~/mlxenv"
echo " - MLX ์์ค: ~/mlx"
echo " - Hugging Face CLI: $(which huggingface-cli 2>/dev/null || echo '์ค์น๋จ')"
echo ""
echo "๐ง ์ฌ์ฉ๋ฒ:"
echo " 1. ๊ฐ์ํ๊ฒฝ ํ์ฑํ: source ~/mlxenv/bin/activate"
echo " 2. Python์์ ์ฌ์ฉ: import mlx.core as mx"
echo " 3. ๋ชจ๋ธ ๋ค์ด๋ก๋: huggingface-cli download MODEL_NAME --local-dir ./MODEL_DIR"
echo " 4. MLX ์์ํ: python -m mlx_lm.quant.dwq --model MODEL_PATH"
echo ""
echo "๐ก ์์ ๋ช
๋ น์ด:"
echo " # ๋ชจ๋ธ ๋ค์ด๋ก๋"
echo " huggingface-cli download Qwen/Qwen3-30B-A3B --local-dir ./Qwen3-30B-A3B"
echo ""
echo " # DWQ ์์ํ"
echo " python -m mlx_lm.quant.dwq --model ./Qwen3-30B-A3B --mlx-path ./Qwen3-30B-A3B-DWQ --bits 3"
echo ""
echo "โ
์ค์น ์๋ฃ!"
#!/usr/bin/env bash
set -euxo pipefail
echo "๐ MLX with CUDA ์์ ์ค์น ์์..."
## 0) ๊ธฐ๋ณธ ์์กด์ฑ ์ค์น
echo "๐ฆ ๊ธฐ๋ณธ ์์กด์ฑ ํจํค์ง ์ค์น..."
sudo apt-get update -y
sudo apt update -y
sudo apt-get install -y build-essential git wget curl python3.10-venv \\
pkg-config libopenblas-dev liblapack-dev
sudo apt-get install -y liblapack-dev libatlas-base-dev gfortran liblapacke-dev
## 1) NVIDIA CUDA 12.4 & cuBLAS ์ค์น
echo "๐ง NVIDIA CUDA 12.4 ์ค์น..."
sudo apt-get install -y gnupg ca-certificates
sudo mkdir -p /etc/apt/keyrings
curl -fsSL <https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub> \\
| sudo tee /etc/apt/keyrings/cuda.asc
echo "deb [signed-by=/etc/apt/keyrings/cuda.asc] \\
<https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/> /" \\
| sudo tee /etc/apt/sources.list.d/cuda.list
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4 \\
libcublas-12-4 libcublas-dev-12-4
# CUDA ํ๊ฒฝ๋ณ์ ์ค์
export CUDA_HOME=/usr/local/cuda-12.4
echo 'export CUDA_HOME=/usr/local/cuda-12.4' >> ~/.bashrc
echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
#!/bin/bash
echo "๐ง CUDA ํค๋ง ์ถฉ๋ ํด๊ฒฐ ์ค..."
# 1. ๊ธฐ์กด CUDA sources.list ํ์ผ๋ค ํ์ธ ๋ฐ ์ ๊ฑฐ
echo "๐ ๊ธฐ์กด CUDA ๋ฆฌํฌ์งํ ๋ฆฌ ์ค์ ํ์ธ..."
sudo find /etc/apt/sources.list.d/ -name "*cuda*" -exec rm -v {} \\;
# 2. ๊ธฐ์กด ํค๋ง ํ์ผ๋ค ์ ๋ฆฌ
echo "๐๏ธ ๊ธฐ์กด ํค๋ง ํ์ผ ์ ๋ฆฌ..."
sudo rm -f /etc/apt/keyrings/cuda.asc
sudo rm -f /usr/share/keyrings/cuda-archive-keyring.gpg
# 3. APT ์บ์ ์ ๋ฆฌ
echo "๐งน APT ์บ์ ์ ๋ฆฌ..."
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
# 4. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก CUDA ํค๋ง ์ค์
echo "๐ CUDA ํค๋ง ๋ค์ ์ค์ ..."
sudo mkdir -p /etc/apt/keyrings
wget -qO - <https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub> | sudo gpg --dearmor -o /etc/apt/keyrings/cuda-archive-keyring.gpg
# 5. CUDA ๋ฆฌํฌ์งํ ๋ฆฌ ๋ค์ ์ถ๊ฐ
echo "๐ฆ CUDA ๋ฆฌํฌ์งํ ๋ฆฌ ๋ค์ ์ถ๊ฐ..."
echo "deb [signed-by=/etc/apt/keyrings/cuda-archive-keyring.gpg] <https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/> /" | sudo tee /etc/apt/sources.list.d/cuda-toolkit.list
# 6. APT ์
๋ฐ์ดํธ
echo "๐ APT ์
๋ฐ์ดํธ..."
sudo apt-get update
echo "โ
CUDA ํค๋ง ์ถฉ๋ ํด๊ฒฐ ์๋ฃ!"
echo "์ด์ CUDA ์ค์น๋ฅผ ๊ณ์ ์งํํ ์ ์์ต๋๋ค.