전체 글
-
연속 체크포인팅으로 AI 모델 학습 성능을 극대화하는 방법AI 2026. 4. 2. 10:53
대규모 AI 모델을 학습시키다 보면 누구나 한 번쯤 이런 상황을 겪어요. 수십 시간 동안 돌리던 학습이 하드웨어 오류 하나로 처음부터 다시 시작되는 순간이죠. 이 문제를 해결하는 열쇠가 바로 연속 체크포인팅(Continuous Checkpointing)이에요. 구글이 Orbax와 MaxText에 새롭게 도입한 이 기능은, 기존의 고정 주기 체크포인트 방식이 가진 근본적인 한계를 극복하고 학습 자원 낭비를 최소화해요. 이 글에서는 연속 체크포인팅이 무엇인지, 왜 기존 방식보다 뛰어난지, 그리고 실제로 어떻게 적용하는지를 단계별로 설명해 드릴게요.기존 체크포인트 방식의 딜레마AI 모델 학습에서 체크포인트(Checkpoint)는 학습 중간 상태를 저장하는 일종의 '세이브 포인트'예요. 문제는 이 저장 주기를 ..
-
딥러닝 혼합 정밀도 훈련: BF16 vs FP16 완벽 가이드AI 2025. 6. 24. 16:25
딥러닝 혼합 정밀도 훈련: BF16 vs FP16 완벽 가이드딥러닝 모델을 훈련할 때 가장 큰 고민 중 하나는 바로 메모리 부족입니다. 특히 대용량 언어 모델(LLM)을 파인튜닝할 때는 GPU 메모리가 금세 바닥나는 경험을 해보셨을 텐데요. 이런 문제를 해결하는 핵심 기술이 바로 **혼합 정밀도 훈련(Mixed Precision Training)**입니다.오늘은 혼합 정밀도 훈련의 두 주요 방식인 BF16과 FP16에 대해 자세히 알아보겠습니다.혼합 정밀도 훈련이란?전통적으로 딥러닝 모델은 32비트 부동소수점(FP32)으로 훈련되었습니다. 하지만 이는 메모리를 많이 사용하고 훈련 속도가 느리다는 단점이 있었죠. 혼합 정밀도 훈련은 16비트 부동소수점을 사용해 이런 문제를 해결하는 기술입니다.핵심 아이디어..
-
[안드로이드] 화면 켜짐 상태 유지 및 해제안드로이드 2023. 3. 8. 10:54
개요 안드로이드에서 앱 개발 시 화면을 켜짐 상태로 유지해야하는 경우가 있다. 그럴 경우 아래와 같이 flag를 추가 및 제거해준다. 켜짐 상태 유지 아래와 같이 window.addFlags에 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 을 추가해준다. class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } } 또 다른 ..
-
[안드로이드] Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8안드로이드 2023. 2. 13. 16:18
개요 안드로이드에서 Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8 에러가 발생하였다. 원인 원인은 gradle의 버전을 올리면서 Java 11을 써야한다는 것이다. 해결방법 Gradle의 Java 버전을 11로 변경해줘야한다. 변경하는 방법은 아래와 같다. 1. Preferences를 눌러 Preferences 창을 띄운다. 2. Build, Execution, Deplyment > Build Tools > Gradle을 누른다 3. Gradle JDK에서 Java 11로 변경을 해준다. 4. Apply 또는 OK를 눌러 적용을 한다. 마치며 위와 같은 방법으로 JDK의 버전을 변경할 수 있다. 앞으로 Gra..
-
[Swift] Status Bar Background Color 변경iOS 2022. 9. 22. 22:30
개요 status bar의 배경 색상을 변경해보자 Status Bar 배경색 변경 iOS 13부터는 windowScene의 statusBarManager을 이용해서 status bar의 배경색을 변경할 수 있다. 색상을 변경하는 코드는 아래와 같다. func changeStatusBarBgColor(bgColor: UIColor?) { if #available(iOS 13.0, *) { let window = UIApplication.shared.windows.first let statusBarManager = window?.windowScene?.statusBarManager let statusBarView = UIView(frame: statusBarManager?.statusBarFrame ?? ...
-
[안드로이드] Compose architectural layering안드로이드 2021. 9. 16. 02:57
개요 이번에는 Compose의 아키텍처 레이어링에 대해 알아보자. 내용은 안드로이드 개발자 사이트를 기반으로 작성하였다. Jetpack Compose 아키텍처 레이어링 Jetpack Compose는 모놀리식 프로젝트가 아닌 완전한 스택을 만들기 위한 여러가지 모듈의 조합으로 만들어졌다. Jetpack Compose를 구성하는 모듈을 이해한다면 아래와 같은 기능을 개발하는데 용이하다. 적절한 수준의 추상화를 사용하여 앱 및 라이브러리를 빌드 할 수 있다. 보다 세부적인 제어나 맞춤 설정을 위한 낮은 수준으로 드롭다운 할 수 있는 경우를 파악할 수 있다. 종속 항목을 최소화 할 수 있다. 레이어 각 레이어는 하위 수준 기반으로 상위수준의 구성요소를 만들기 위해 기능을 결합한다. 각 레이어는 하위 레이어의 공..
-
[Android] Compose Side Effect안드로이드 2021. 8. 20. 17:09
개요 Compose에서 Side Effect를 어떻게 사용하는지 알아보자 Side Effect란 Composable 외부에서 발생하는 앱의 상태 변경사항을 말한다. Effect란 UI에 방출하지 않으며 Composition이 완료될 때 Side Effect를 실행하는 Composable 함수이다. State 및 Effect 사용 사례 Composable은 Side Effect에 Free 해야한다. 앱의 상태 변경이 필요할 때 Composable의 생명주기를 알고 있는 제어되는 환경으로 부터 호출해야 한다. Compose에서 가능성 있는 Effect들을 열어두기 때문에 쉽게 과하게 사용할 수있다. 그래서 UI와 관련되고 단방향 데이터 플로우를 중단시켜서는 안된다. LaunchedEffect Launched..
-
[Swift] 문자의 ASCII 코드 구하는 방법iOS 2021. 8. 11. 18:08
개요 개발을 하다보면 ASCII 코드를 구하는 기능을 개발해야할 경우가 있다. 오늘은 문자의 ASCII 코드를 구하는 방법을 알아보자. ASCII 코드 구하는 방법 문자의 ASCII 코드를 구하는 코드는 아래와 같다. func getASCII(char: String) -> UInt8? { return Character(char).asciiValue } 위와 같이 간단하게 ASCII코드를 구할 수 있다. 위 함수에서 파라메터로 문자가 여러개 들어간 문자열을 넘기면 안되고 문자 한개만 있는 문자열을 넘겨야한다. 위 함수를 호출한 예를 보면 아래와 같다. let result1 = StringUtil.getASCII(char: "A") let result2 = StringUtil.getASCII(char: "B..