We announce this program in Korean only, and the contents are not translated.
CASYS연구실에서 2025년 여름 인턴 학생을 모집합니다.
진행방식
인턴 프로젝트 박사/석사 학생의 맨토링으로 진행되며 중간중간 저와 2주 혹은 3주에 한번 개인 미팅을 하는 식으로 진행됩니다.
인턴 프로젝트는 저희 대학원생의 연구에서 필요한 내용으로 만들어집니다. 특정 부분에 대한 구현이나 비교 대상이 되는 시스템의 실험등이 대표적인 예 입니다.
CASYS 연구실에서 인턴 학생들을 위한 자리를 마련하였습니다. 인턴 수에 따라 변동이 될 수 있으나 연구실에 출퇴근을 하면 인턴 프로젝트를 진행하는 것을 권장합니다.
여름학기 인턴으로 선발된 학생에게는 여름 방학 두달 동안 매월 50만원을 지급합니다.
공식 기간은 방학 2달입니다. 하지만 시스템 연구의 특성상 방학이 시작하기 전에 저희 연구실에서 개별 연구 방식으로 미리 준비를 하고 방학이 시작되면 본격적으로 시작하는 방식을 권장합니다.
자격요건
엄격한 자격사항은 아니나 CS330 운영체제를 수강한 학생을 선호합니다.
지원방법
(1) 희망 연구주제 (아래 연구 주제 공지) 1순위와 2순위 (2) 성적표 (3)간단한 CV
[2024 여인턴] 태그를 제목에 붙여서 email로 보내주세요. email 주소: yjkwon@casys.kaist.ac.kr
연구 주제
올해는 다음과 같은 4가지 주제로 인턴을 모집합니다.
거대 모델 및 인공지능 시스템에 대한 가속화 연구
Rust언어 기반의 운영체제 및 시스템 컴포넌트 연구
ZNS SSD및 FDP SSD를 활용한 파일 및 스토리지 시스템 연구
eBPF를 활용한 메모리 시스템 가속화 연구
Tiered memory system을 통한 메모리 최적화 연구
연구 주제들에 대한 구체적인 설명은 다음과 같습니다.
거대 모델 및 인공지능 시스템에 대한 가속화 연구
저희는 sustainable and efficient ML system 연구를 진행을 하고 있습니다. ChatGPT와 같은 대형 언어 모델의 훈련 및 추론은 매우 많은 양의 에너지를 소모를 합니다. 과거에는 모델의 성능을 향상시키는 것에 초점이 대부분 맞춰졌지만, 앞으로는 모델 훈련 및 추론에 쓰이는 에너지 문제를 해결하기 위한 연구가 많은 관심을 받을 것입니다.대형 언어 모델의 엄청난 연산 요구량과 메모리 요구량을 맞추기 위하여 multi-GPU를 활용한 분산 트레이닝이 필수적입니다. 예시로 GPT3-175B 모델을 훈련하기 위해서는 1024개의 V100 GPU를 사용하여 34일이 소요되며, 이는 막대한 양의 에너지를 요구합니다. 실제로 구글에서는 회사 전체에서 쓰이는 에너지의 10~15% 정도가 인공지능 모델 훈련 및 추론에 쓰인다고 합니다. 저희는 분산 트레이닝 환경에서 GPU의 하드웨어 기능을 적절하게 활용하여 성능 저하를 최소화하고 에너지 절감을 극대화할 수 있는 프레임워크를 개발을 하여 지속가능한 인공지능 시스템 개발에 기여를 하고자 합니다.대형 언어 모델을 효과적으로 지원하기 위해 데이터 병렬화, 파이프라인 병렬화, 텐서 병렬화, 그리고 Mixture of Experts와 같은 다양한 병렬화 기법을 지원하여 더 큰 모델을 효과적으로 지원할 수 있는 환경을 조성하고자 합니다.
Rust언어 기반의 운영체제 및 시스템 컴포넌트 연구
Rust를 기반으로 새로운 운영체제를 설계하는 연구입니다. Rust는 현재 시스템 프로그래밍 분야에서 memory safety를 보장하는 언어로 각광받고 있습니다. 예를 들어, linux는 6.2버전부터 Rust를 두번째 공식 개발 언어로 도입하였고, windows는 시스템 라이브러리들을 rust로 다시 구현하기시작했습니다. 하지만 아직까지 대부분의 프로젝트가 Rust를 단순히 memory safety bug가 없는 C정도로 사용하고 있습니다. 하지만 RustOS 프로젝트에서는 이를 넘어 Rust의 특성을 이용하여 좀 더 효율적인 운영체제를 설계하는 것을 목표로 하고 있습니다. 현재 프로젝트는 새로운 abstraction을 설계하고, 해당 abstraction을 이용하여 새로운 구조를 가진 운영체제를 구현하고 있습니다. 즉, 스케쥴링이나 메모리 관리와 같은 기초적인 리소스 관리부터 파일시스템이나 TCP/IP 기반 네트워크 같은 심화적인 기능들을 모두 rust를 이용하여 새로 구현하였고, 현재 클라우드 응용들이 저희 Rust기반 운영체제에서 동작합니다. 이를 심화시키기 위한 단계로 운영체제 구현의 성능을 분석하고 고도화는 프로젝트들을 진행중입니다. Rust OS 프로젝트에서 함께 일하실 학생은 다음과 같은 조건을 만족해야 합니다. Rust를 익숙하게 사용할 수 있어야 합니다. 운영체제에 대한 기본적인 이해가 필요합니다. 큰 코드 베이스를 읽고 이해할 수 있어야 합니다.
ZNS SSD및 FDP SSD를 활용한 파일 및 스토리지 시스템 연구
새로운 스토리지 디바이스에 적합한 파일 및 스토리지 시스템 연구입니다. 그 중에서 현재 저희 연구팀에서 인턴을 모집하고 있는 연구 주제는 ZNS SSD와 FDP SSD를 활용한 파일 및 스토리지 시스템 연구입니다. 현세대 SSD의 저장 장치로 쓰이는 NAND flash는 page size로 write이 가능하지만 page size보다 몇백배 큰 block size로만 erase가 가능하다는 특징으로 인해서 erase를 진행하기 위해서 block 안에 valid한 page를 다른 block으로 옮긴 후에 erase가 가능한 현상이 존재합니다. 이런 garbage collection은 valid한 page를 다른 block으로 옮기면서 불필요한 read와 write을 동반하기 때문에 SSD의 성능애 영향을 주고 수명에도 악영향을 줍니다. ZNS SSD와 FDP SSD는 위의 문제를 해결하기 위한 SSD로, ZNS SSD는 disk의 page allocation을 host OS에서 진행하고 FDP SSD는 disk의 page allocation에 OS가 hint를 제공하는 방식으로 최대한 수명이 비슷한 page들을 같은 block에 할당해 위의 문제를 해결하려 합니다. 저희 연구팀은 다음 SSD의 특징을 분석하고 파일 및 스토리지 시스템을 어떻게 설계해야 최대한 효율적으로 SSD를 사용할 수 있을지에 대해 연구합니다.
eBPF를 활용한 메모리 시스템 가속화 연구
Security, Confidential computing및 eBPF에 대한 연구입니다. 운영체제의 기능을 동적으로 확장시키는 커널 모듈과 같은 기능을 안전하게 사용하기 위한 방식입니다. 장치 드라이버들이 대부분 모듈로 구현됩니다. 이러한 커널 모듈을 일반 유저가 안전하게 커널에 작성할 수 있다면 정말 많은 가능성이 열릴것입니다. Extended Berkeley Packet Filter (eBPF)는 이러한 목표를 위해서 최근 많은 관심을 받고 있는 리눅스 커널의 기능입니다. 저희 연구실에서는 eBPF를 다양한 커널의 활용분야에 접목시키는 연구와 eBPF가 가지는 근원적인 한계를 극복하는 연구를 수행중입니다. 그중 Security측면으로 Use-after-free (UAF)버그를 효율적으로 막기 위한 Allocator디자인을 eBPF와 함께 복합적으로 진행하는 연구와, Confidential computing의 한계를 eBPF를 통해서 극복하는 연구가 수행중에 있습니다.
Tiered memory system을 통한 메모리 최적화 연구
최근 AI, ML 분야가 각광받고 있고 대용량 메모리를 사용하는 워크로드 수요가 증가하고 있습니다. 메모리 용량이 워크로드가 사용하는 메모리보다 적은 경우 리눅스에서는 디스크로 스왑이 발생합니다. 디스크에 접근하는 경우 메모리보다 약 10000배 정도 접근 시간이 느려지며 이로 인해 워크로드의 성능이 저하됩니다. 이러한 문제를 해결하기 위해 제안된 시스템이 tiered memory system 입니다. Tiered memory system은 기존의 DRAM 외에 접근 시간이 느리고 용량이 큰 2nd tier 메모리를 추가로 제공하여 대용량 메모리를 확보하는 구조입니다. 이전 연구에서는 주로 NVM(Non-volatile memory)을 2nd tier 메모리로 활용해왔으며, 최근들어 CXL memory 를 활용한 연구가 많은 관심을 받고 있습니다. 2nd tier 메모리는 DRAM 보다 느린 접근 시간을 가지므로 자주 사용되는 데이터는 DRAM, 그렇지 않은 데이터는 2nd tier 메모리에 위치시켜서 tiered memory system 의 성능을 향상시킬 수 있습니다. 저희는 어떤 방식으로 데이터 사용을 추적할 것인지, 어떻게 더 효율적인 데이터 이동 방식을 구현할 것 인지에 대해 연구하고 있습니다.