본문 바로가기

전체 글15

Tokenizer 비교 실험 (형태소 분석, word piece) * Environment : Ubuntu 18.04, Python 3.8.3 * Dataset : Korean Wikipedia 토크나이저의 방식은 크게 두가지 방식으로 볼 수 있다. Word piece 혹은 subword segmentation으로 한 단어를 세부 단어로 분리하는 방식과 형태소 분석 방식이 있다. 영어를 기반으로 발전되었기에 word piece 방식이 다양하고 속도측면에서 빠르지만, 한국어의 특성상 형태소 분석 방식이 좀 더 적합하기는 하다. 그래서 두가지 tokenizing 방식에 대해 (미루고 미루던) 비교 실험을 진행해보았다! 간략하게 정리하자면, 공개된 패키지 기반으로 각 방식마다 알려진 것은 표에 정리해두었다. Word piece Morphology BPE (ACL 2015, .. 2020. 8. 6.
Tensorflow mirrored strategy 사용하여 2개 GPU로 BERT fine-tuning 학습하기 Horovod로도 해봤지만 Tensorflow 내에서 기본적으로 제공하는 패키지를 사용하여 여러 개의 GPU로 분산학습이 가능하다. 이번엔 추가 프레임워크 사용없이 Tensorflow 내에서 해보고자 한다. * Environment : Ubuntu 18.04, CUDA 10.0, CuDNN 7.6.5, 2 * Titan RTX, Tensorflow 1.14, Anaconda, Python 3.6.5 * Model : BERT Multilingual cased model * Dataset : SQuAD 2.0 공식 문서와 colab으로 자세하게 설명이 되어있지만, 내 코드에 적용시키기 위한 충분한 설명이 아니어서 이를 구현하는 데에는 시간이 조금 필요했다. 이번에 사용할 분산 방법은 Mirrored Str.. 2020. 6. 5.
2개의 GPU로 BERT SQuAD2.0 fine-tuning training 하기 연구실 PC를 Titan RTX (24GB) GPU를 사용해서 하는데 기존 레퍼지토리에서 가이드로 제공하는 것보다 2배의 RAM인데, batch size 2배로 돌리면 OOM 에러가 뜬다.. 그래서 Titan RTX GPU를 하나 더 받아, 더 큰 배치사이즈로도 돌려보기로 하였다. 우선 나에겐 GPU PC가 처음이었고 낯설어 multi gpu를 사용하기 위해서 새로이 학습하고 찾아봐야했다. 찾아보았을 때 Horovod를 사용하여 multi gpu를 주로 사용한다고 하여 이를 따라보기로 했다. What is Horovod ? * Motivation : single-GPU 학습 스크립트를 쉽게 가져오고 이를 성공적으로 scalable하게 여러 GPU에서 병렬적으로 학습할 수 있도록 하는 것 - 프로그램을 배.. 2020. 5. 21.
[프로그래머스] 종이접기 문제 (Level 3) Python 풀이 문제 설명 직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽으로 접습니다. 종이를 모두 접은 후에는 종이를 전부 펼칩니다. 종이를 펼칠 때는 종이를 접은 방법의 역순으로 펼쳐서 처음 놓여있던 때와 같은 상태가 되도록 합니다. 위와 같이 두 번 접은 후 종이를 펼치면 아래 그림과 같이 종이에 접은 흔적이 생기게 됩니다. 위 그림에서 ∨ 모양이 생긴 부분은 점선(0)으로, ∧ 모양이 생긴 부분은 실선(1)으로 표시했습니다. 종이를 접은 횟수 n이 매개변수로 주어질 때, 종이를 절반씩 n번 접은 후 모두 펼쳤을 때 생기는 접힌 부분의 모양을 배열에 담아 return .. 2020. 3. 13.
[프로그래머스] 정수 삼각형 문제 (Level 3) Python 풀이 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 triangle result [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 이 문제는 동적계.. 2020. 3. 12.
[프로그래머스] 가장 큰 정사각형 찾기 (Level 2) Python 풀이 문제 설명 1와 0로 채워진 표(board)가 있습니다. 표 1칸은 1 x 1 의 정사각형으로 이루어져 있습니다. 표에서 1로 이루어진 가장 큰 정사각형을 찾아 넓이를 return 하는 solution 함수를 완성해 주세요. (단, 정사각형이란 축에 평행한 정사각형을 말합니다.) 예를 들어 해당 표에서 가장 큰 정사각형 넓이는 9가 되므로 9를 반환해 주면 됩니다. 제한사항 표(board)는 2차원 배열로 주어집니다. 표(board)의 행(row)의 크기 : 1,000 이하의 자연수 표(board)의 열(column)의 크기 : 1,000 이하의 자연수 표(board)의 값은 1또는 0으로만 이루어져 있습니다. 입출력 예 board answer [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0.. 2020. 3. 11.
[프로그래머스] N으로 표현 문제 (Level 3) Python 풀이 문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 입출력 예 N number return 5 1.. 2020. 3. 10.
[알고리즘 개념] 동적 계획법 (Dynamic Programming?) 동적계획법 (Dynamic Programming) ? 크기가 작은 부분 문제들의 해들을 결합하여 문제를 해결하는 방법을 말한다. 이전 단계들의 점화식을 세워 해결하기도 한다. - 설계 원칙 1) 문제의 해를 구할 수 있는 재귀적인 성질을 설정한다. 2) 상향식 접근방식에 의해 크기가 작은 문제를 먼저 해결한 후, 크기가 큰 문제를 나중에 해결한다. 3) 크기가 큰 문제해결을 효율적으로 하기 위해, 크기가 작은 문제의 해는 테이블에 저장한다. (다시 계산 피하기 위해) - 분할 정복 방식과의 차이점 : 분할 정복 방식에서는 서로 공유되는 같은 부분문제가 있다 하더라도 독립적으로 반복적인 계산을 하지만, 동적계획법에서는 이러한 반복을 피할 수 있으므로 효율적인 문제 해결이 가능하다. 대표적인 문제로 이항계수.. 2020. 3. 9.
[Coursera ML][5주차] Neural Network : Learning 우와.. 강의 거의 다 들었는데... 컴퓨터가 맘대로 꺼져서필기가 다 날아갔다 ㅠㅠㅠㅠㅠ 저장을 습관화하자^^ 앞에는 읽기자료에서 다시 최대한 복기...쒸익... * 5주차 학습 목표 : 주어진 트레이닝 세트 parameter를 fitting하는 학습 알고리즘 1. Cost Function and Backpropagation L = total number of layers in the network sl = number of units (not counting bias unit) in layer l K = number of output units/classes Cost Function : logistic regression과 다른 점 : bias unit 포함하지 않고 계산, K=1~K output 유닛.. 2020. 3. 3.