Skip to main content

ubuntu MATE 22.04 에서 한글 설정 하기

· 2 min read

본 문서에서는 ubuntu MATE 22.04 에서 한글을 입력하기 위한 방법을 다루고 있습니다.

우분투의 기본 데스크탑 환경은 GNOME이지만, 네트워크 원격 접속시 최적화를위해 경량화된 MATE 데스크탑을 사용하기도 합니다.

info

자동차 산업 클라우드에서 기본 데스크탑 환경으로 'MATE'를 제공합니다.

1. VM생성 및 서버 접속 하기

info

작성중

2. ibus-hangul 설치

2.1 패키지 설치

sudo apt install ibus-hangul #재부팅 필수

2.2 ibus설정

화면 이동 : 좌상단 Menu > Control Center > Other > Ibus Preferences

image

2.3 input method 추가

  • input method > add > korean > Hangul > add
image
ibus-hangul 설치 전
image
ibus-hangul 설치 후

한글 입력은 korean이 아닌 Hangul이 선택되어 있어야 가능 합니다.

image

2.4 한글 입력 활성화

우상단 EN 클릭후 Korean-Hangul 선택

imageimage
활성화 전활성화 후

2.5 한영변환 키

Shift + Space로 한/영 변환 하여 사용

image

3. Tip

작성 중 글자 자동 삭제시

입력시 마지막 글자 or 작성중 글자 자동 삭제 되는 이슈

Ubuntu의 이모지 단축키와 충돌나는 현상으로 해당 단축키를 삭제

image

(클라우드) dpkg frontend lock 에러 발생시 해결법

· 2 min read

에러 메시지

dpkg: error: dpkg frontend lock was locked by another process with pid 9634
Note: removing the lock file is always wrong, and can end up damaging the
locked area and the entire system. See <https://wiki.debian.org/Teams/Dpkg/FAQ>.

발생 원인

다른 프로그램(프로세스)에서 dpkg를 사용하고 있어 발생 하는 에러 입니다. 보통 백그라운드에서 패키지 업데이트 및 보안 업데이트 진행 시 발생 합니다.

해결 방법

보안 업데이트는 운영서버에서는 필수적으로 수행 하여야 하지만, 개발 서버에서는 필수는 아니기에 비활성화 합니다.

$ sudo systemctl -f stop unattended-upgrades #패지지 자동 업데이트 프로제스 종료하기
$ sudo apt remove unattended-upgrades # 패지지 자동 업데이트기능 제거 (재부팅 필요 할수 있음)
$ systemctl status unattended-upgrades # 비활성화 확인

(GPUaaS) A100 GPU 병렬 사용하기-MIG 기반

· 2 min read
  • (기존) 한 프로세스가 cuda:LOCAL_RANK(0, 1, 2, ...) 같은 로컬 GPU 인텍스 직접 사용
  • (MIG 기반) 각 프로세스가 자기 MIG 1개만 보도록 만든 뒤, 프로세스 내부에서는 항상 cuda:0 만 사용
    (CUDA_VISIBLE_DEVICES=해당 MIG UUID)

1. CUDA_VISIBLE_DEVICES 설정

  • 기존 DDP (물리 GPU)

    • 스크립트 밖 (shell) 에서 설정 또는 미설정 (자동 할당)
    • 코드 내에서 LOCAL_RANK 로 디바이스 지정
  • MIG 기반

    • import torch 전 강제 매핑
      1. LOCAL_RANK 읽기
      2. CUDA_VISIBLE_DEVICES 를 해당 프로세스의 MIG UUID 1개로 설정
      3. NCCL 관련 env 설정
import os

# nvidia-smi -L 명령어로 확인한 MIG UUID
MIG_IDS = [
"MIG-XXXXXX...",
"MIG-VVVVVV..."
]

# 1. LOCAL_RANK 읽기
local_rank = int(os.environment.get("LOCAL_RANK", "0"))
# 2. CUDA_VISIBLE_DEVICES 를 해당 프로세스의 MIG UUID 1개로 설정
os.environment["CUDA_VISIBLE_DEVICES"] = MIG_IDS[local_rank]
# 3. NCCL 관련 env 설정
os.environment.setdefault("NCCL_P2P_DISABLE", "1")
os.environment.setdefault("NCCL_IB_DISABLE", "1")

2. set_device/device 지정

  • 기존 DDP
local_rank = int(os.environ["LOCAL_RANK"])
torch.cuda.set_device(local_rank)
device = torch.device(f"cuda:{local_rank}")
ddp_model = DDP(model, device_ids=[local_rank])

  • MIG 기반
# 프로세스 당 MIG 1개씩 사용하도록 강제 매핑
torch.cuda.set_device(0)
device = torch.device("cuda:0")
ddp_model = DDP(model, device_ids=[0])

3. 실행

  • 기존 DDP
torchrun --standalone --nproc_per_node=${num_devices} xxxx.py

  • MIG 기반
    • 실행 전 CUDA_VISIBLE_DEVICES 세팅 해제 (하나의 프로세스가 하나의 GPU 사용하도록 강제)
unset CUDA_VISIBLE_DEVICES

torchrun --standalone --nproc_per_node=${num_devices} xxxx.py