728x90

전체 글 506

스프링 배치 멀티 스레드 프로세싱

기본 개념 RestTempate가 실제로 실행할 로직이 들어있는 RepeatCallback 각 스레드마다 실행시키게 된다. RepeatCallback안에서 일어나는 Chunk process도 각 스레드마다 일어나게 된다. 스프링 배치 스레드 모델 기본적으로는 단일 스레드 방식으로 작업 성능 향상과 대규모 데이터 작업을 위한 비동기 처리 및 Scale out 기능을 제공한다. Local 과 Remote 처리를 지원한다. AsyncItem Processor / Writer = 별도의 스레드가 할당되어 작업을 처리하는 방식 Multi-threaded step = Step 내 Chunk 구조인 ItemReader, Processor, Writer 마다 여러 스레드가 할당되어 실행하는 방법 Remote Chunk..

WEB/Spring Batch 2023.03.30

스프링 배치 반복 및 오류 제어

Repeat Spring Batch는 얼마나 작업을 반복해야 하는지 알려 줄수 있는 기능을 제공한다. 특정 조건이 충족 될 때까지 (또는 특정 조건이 아직 충족되지 않을 때까지) Job 또는 Step 을 반복하도록 배치 애플리케이션을 구성 할 수 있다. 스프링 배치에서는 Step 의 반복과 Chunk 반복을 RepeatOperation 을 사용해서 처리하고 있다 기본 구현체로 RepeatTemplate 를 제공한다 반복 종료를 결정하는 3가지 항목 RepeatStatus 스프링 배치의 처리가 끝났는지 판별하기 위한 열거형(enum) CONTINUABLE - 작업이 남아 있음 FINISHED - 더 이상의 반복 없음 CompletionPolicy RepeatTemplate 의 iterate 메소드 안에서 ..

WEB/Spring Batch 2023.03.25

스프링 배치 청크 프로세스 활용 - ItemWriter , ItemProcessor

FlatFileItemWriter - 개념 및 API 소개 2차원 데이터(표)로 표현된 유형의 파일을 처리하는 ItemWriter 고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 기록한다 Resource 와 LineAggregator 두 가지가 요소가 필요하다 LineAggregator Item 을 받아서 String 으로 변환하여 리턴한다 FieldExtractor를 사용해서 처리할 수 있다 구현체 PassThroughLineAggregator, DelimitedLineAggregator, FormatterLineAggregator Reader에서 봤던 Tokenizer(comma기준으로 쪼개는것처럼) comma 기준으로 다시 합(aggregate) 해준다. FieldExtra..

WEB/Spring Batch 2023.03.24

스프링 배치 청크 프로세스 활용 - ItemReader

FlatFileItemReader - 개념 및 API 소개 기본개념 2차원 데이터로 표현된 유형의 파일을 처리하는 ItemReader 일반적으로 고정 위치로 정의된 데이터 필드나 특수 문자에 의해 구별된 데이터의 행을 읽는다. Resource 와 LineMapper 2가지 요소가 필요하다. Resource = 스프링에서 제공하는 인터페이스로 FileSystemResource , ClassPathResource 구현체가 있다. LineMapper 파일의 라인 한줄을 Object로 변환해서 FlatFileItemReader 로 리턴한다. 단순히 문자열을 받기 때문에 문자열을 토큰화 해서 객체로 매핑하는 과정이 필요하다. LineTokenizer와 FieldSetMapper 를 사용해서 처리한다. FieldS..

WEB/Spring Batch 2023.03.23

스프링 배치 청크 프로세스 이해

Chunk 기본개념 Chunk란 여러 개의 아이템을 묶은 하나의 덩어리 , 블록을 의미함 한번에 하나씩 아이템을 입력 받아 Chunk 단위의 덩어리로 만든 후 Chunk 단위로 트랜잭션을 처리함 , 즉 Chunk 단위의 Commit 과 Rollback 이 이루어짐 일반적으로 대용량 데이터를 한번에 처리하는 것이 아닌 청크 단위로 쪼개어서 더 이상 처리할 데이터가 없을 때까지 반복해서 입출력하는데 사용됨 Chunk = ItemReader 로 읽은 하나의 아이템을 Chunk에서 정한 개수만큼 반복해서 저장하는 타입 Chunk = ItemReader로부터 전달받은 Chunk 를 참조해서 ItemProcessor에서 가공 , 필터링 한후에 ItemWriter에게 전달하는 타입 하나의 chunk가 읽고 ,가공,쓰..

WEB/Spring Batch 2023.03.22

스프링 배치 실행 - Flow

FlowJob - 개념 및 API 소개 1. 기본개념 - Step을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder에 의해 생성된다. Step이 실패하더라도 Job은 실패로 끝나지 않도록 해야하는 경우 Step이 성공했을 때 다음에 실행해야할 Step을 구분해서 실행 해야하는 경우 특정 Step은 전혀 실행되지 않게 구성 해야하는 경우 Flow 와 Job은 흐름을 구성하는데만 관여하고 실제 비지니스 로직은 Step에서 이루어진다. 내부적으로 SimpleFlow 객체를 포함하고 있으며 Job 실행시 호출한다. @Bean public Job batchJob() { return jobBuilderFactory.get("batchJob") .st..

WEB/Spring Batch 2023.03.03

스프링 배치 실행 - Step

StepBuilderFactory 1. StepBuilderFactory - StepBuilder를 생성하는 팩토리 클래스로서 get(String name) 메서드 제공 - StepBuilderFactory.get("stepName")으로 Step을 생성함 2. StepBuilder - Step을 구성하는 설정 조건에 따라 다섯 개의 하위 빌더 클래스를 생성하고 실제 Step 생성을 위임한다. - TaskletStepBuilder = TaskletStep을 생성하는 기본 빌더 클래스 - SimpleStepBuilder = TaskletStep을 생성하며 내부 저긍로 청크기반의 작업을 처리하는 ChunkOrientedTasklet 클래스를 생성 - PartitionStepBuilder = Partition..

WEB/Spring Batch 2023.02.28

Building makemore Part 4: Becoming a Backprop Ninja

logprobs = probs.log() loss = -logprobs[range(n), Yb].mean() logprorbs 는 ([32,27]) tensor인데 -logprobs[range(n), Yb]는 1~32 row를 iterate하면서 그중 Yb에 해당하는 column 만 indexing 하는것이다. -logporbs[range(n), Yb] 의 shape 은 32 이다. batch size = 32 dlogprobs/da = -1/3a -1/3b + -1/3c dlogporbs/dsomething = -1/n dlogprobs = torch.zeros_like(logprobs) dlogprobs[range(n), Yb] = -1.0/n -logprobs[range(n), Yb] 여기에 평균값..

AI/Andrej Karpathy 2023.02.26

스프링 배치 실행 - Job

배치초기화 설정 1. JobLauncherApplicationRunner - Spring Batch 작업을 시작하는 ApplicationRunner로서 BatchAutoConfiguration에서 생성 - ApplicationRunner의 구현체임으로 spring boot가 정상적으로 구동되자마자 실행됨 - 기본적으로 빈으로 등록된 모든 Job들을 실행시킨다. 2. BatchProperties - Spring Batch의 환경설정 클래스 - Job 이름 , 스키 초기화 설정, 테이블의 prefix 등을 설정할 수 있다. - application.properties or application.yml 파일에 설정함 spring batch: jdbc: initialize-schema: always 3. Job..

WEB/Spring Batch 2023.02.23

Building makemore Part 3: Activations & Gradients, BatchNorm

fixing the initial loss weight 초기화를 우선 잘못하고 있다. 현재는 loss 가 거의 27이 나오는데 27개의 alphabet 중에 첫 번째 훈련에서는 어느 것이 나와도 이상하지 않다. 즉 최소한 기대할 수 있는 것 uniform distribution을 가정할 수 있다. -torch.tensor(1/27.0).log() tensor(3.2958) 3 정도의 loss를 init step 에 가져가면 괜찮게 가져간 것이다. 3보다 높으면 그냥 뽑는 것만 못하다는 의미이다. logits 의 값들이 가질 수 있는 범위가 클수록 loss 가 굉장히 커지기 쉽다. 거의 0 에 수렴하게 만들고 싶다. # MLP revisited n_embd = 10 # the dimensionality o..

AI/Andrej Karpathy 2023.02.19
728x90