강사님, 안녕하세요. 다중 스케줄러 실행 시 정상적으로 동작하고 있는지 확인할 수 있는 방법에 대해 문의드립니다. 현재 Worker와 Scheduler를 다중으로 실행하여 고가용성 테스트를 진행 중입니다. Worker의 경우 Celery Flower를 통해 정상적으로 Sync가 이뤄지는 것을 확인하였습니다. 다만 Scheduler의 경우 뭔가 정확하게 확인이 안되는 것 같습니다. 우선 제가 찾은 방법으로는 메타 테이블 조회와 커맨드가 있습니다. 메타 테이블 조회 아래와 같이 조회하면 running인 상태의 host가 Scheduler 수만큼 조회됩니다. hostname도 모두 일치합니다. select * from job where job_type = 'SchedulerJob' and state = 'running'; 커맨드 아래와 같이 커맨드 실행 시 'Found one alive job.'이 출력됩니다. $ airflow jobs check --job-type SchedulerJob Found one alive job. Scheduler 로그 확인 시 모두 heartbeat은 계속 요청하고 있습니다. 혹시 Worker와 같이 명확하게 다중 스케줄러 환경인지 확인하는 방법이 있을까요?
variables 를 추가하는 강의에서 variables 추가하고, dags_bash_with_variable.py를 생성후, git push 하고 나중에 봣더니 그 많던 dag(examples + 강의때 따라한 dag) 들중에 딸랑 3개만 보이고 안보여요.. dags 폴더 하위를 찾아가보니 파일은 그대로 존재하는데.. 왜 3개만보이는건지 .. 혹시 확인해볼만한 로그들이나... 이유에 대해서 아실까요..? docker exec -it {스케줄러노드ID} bash 로 들어가서 dags도 확인해봤습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 단순히 한번 입력 받는 게 아닌 do-while문을 사용하신 이유가 궁금합니다!
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 섹션1에 10강을 수강하고있습니다 1-10. 알고리즘 더 풀어보기 (2) 2. 어려움을 겪는 부분 강사님께서 제공해주신 문제를 먼저 풀어보았는데 아래처럼 내장함수를 이용해서 풀어도 되나? 궁금합니다. 최대한 저런 함수 사용하지 않고 강사님께서 제공해주시는 풀이법으로 알고리즘을 공부하는게 맞는거같은데.. 저처럼 풀면 안되는건가 싶어서요...ㅠㅠ 알고리즘적인 생각이 아닌가도 싶고 ㅠㅠ 고민입니다! 일단 char로 순서대로 돌꺼고 어차피 갯수가 1이면 바로 char 을 return해 주면 되지 않을까? 해서 아래처럼 해보았습니다... def find_not_repeating_first_character(string): # 이 부분을 채워보세요! for char in string: if string.count(char) == 1: return char return "_" 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
sqlalchemy 강의 내용에 보면 connection pool에 대한 이론과 실습 설명이 있었습니다. 헌데 비동기를 이용하여 하나의 connection pool만 사용하는 것으로 실습과 코드가 마무리 되더군요. 제가 생각할 때, connection pool을 제대로 사용하기 위해서는 사용 가능한 모든 pool 을 병렬로 처리해야 하지 않을까란 생각이 들었습니다. 하지만, 비동기 병렬 처리를 하게 되면 트랜잭션 락으로 인해 race condition 상태 등의 더 복잡한 문제가 발생할거 같은데, 사용하는게 맞는가란 생각도 들었습니다. 이에 아래와 같은 질문을 드리려 합니다. 1. 실무에서 사용시 connection pool로 할당한 수만큼 비동기 병렬로 처리를 하는게 맞는지요? 2. 만약 맞다면, 트랜잭션 락은 어떻게 구현하여 사용하는게 일반적인지요? 혹은, 예제와 달리, fastapi에서는 요청이 들어오는대로 각각의 connection pool에 할당을 하고 10개가 넘는 경우는 대기를 하다 반환된 pool에 배치되는건지요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. @GetMapping("/members") public Page<?> list(@PageableDefault(size = 5, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { return repository.findAll(pageable).map(MemberResponse::new); } 해당 코드에서 API를 호출했는데 Serializing PageImpl instances as-is is not supported, meaning that there is no guarantee about the stability of the resulting JSON structure! For a stable JSON structure, please use Spring Data's PagedModel (globally via @EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO)) or Spring HATEOAS and Spring Data's PagedResourcesAssembler as documented in https://docs.spring.io/spring-data/commons/reference/repositories/core-extensions.html#core. 이러한WARN 문구가 출력되었습니다. 이는 PageImpl의 객체가 그대로 JSON으로 직렬화되어 구조적인 문제가 발생할 수 있다는 경고 메세지 인데 이를 해결하기 위해서는 HATEOAS 의존성을 주입받아서 PagedModel을 반환하는 방법이 있고 spring.data .web.pageable.serialization-mode=via-dto 해당 코드를 yml 파일에 추가해서 글로벌 설정으로 가져가는 방법이 있고 @EnableSpringDataWebSupport(pageSerializationMode = VIA_DTO)) 방법이 있다고 합니다. 강사님 영상에는 해당WARN 문구가 보이지 않는데 그 이유는 버전의 문제때문에 강사님 영상에는 해당 WARN 문구가 보이지 않는게 싶습니다. 제가 가장 궁금한 것은 물론 프로젝트의 비즈니스에 따라 다르겠지만 위의 방법들중 어떤 방법이 가장 보편적으로 쓰이나 궁금합니다
조금 동 떨어진 질문일 수 있지만, 궁금증이 해소가 되지 않아 질문드립니다. 자바 애플리케이션에서 Thread를 생성해서 실행을 하게될 때, 총 3개의 스택영역을 거쳐야 된다고 생각을 하는데 맞을까요? 우선 런타임 데이터 영역 유저스레드의 스택영역 JVM 내부 스레드의 스택 영역 운영체제 커널 스레드의 스택 영역 각각을 이렇게 정리해봤습니다. 1. 유저 스레드의 스택 영역 - 자바에서 Thread객체를 생성하고 실행하면, JVM은 해당 스레드마다 스택 영역을 생성한다. - 이 스택영역은 바이트코드에서 메서드 호출하고 실행할 때 필요한 데이터를 관리한다. - 유저 스레드이고, 애플리케이션의 비지니스 로직을 수행하는 스레드이다. 2. JVM 내부 스레드의 스택 영역 - 클래스로더, GC, JIT와 같은 JVM내부 작업을 수행하는 스레드는 JVM 내에서 관리되는 스레드이다. - 이 스택 영역은 JVM코드에서 메서드 호출하고 실행할 때 필요한 데이터를 관리한다. - 유저 스레드이고, JVM의 핵심 작업을 수행하는 스레드이다. 3. 운영체제 커널 스레드의 스택 영역 - 커널 스레드는 실제 CPU에서 실행되는 스레드이다. - 유저 스레드의 실행을 처리하기 위해 유저 모드에서 작업을 처리하다가, 시스템 호출이 필요할 때 커널 모드로 전환되어 커널 스레드가 실제로 시스템 자원에 접근하고 작업을 처리한다. - 커널에서는 커널 스레드의 TCB를 관리하여 각 스레드의 실행 상태를 추적한다. - 이 스택 영역은 커널에서 수행하는 메서드에 필요한 데이터를 관리한다.
[질문 내용] Book 외에 Album, Moive도 구현하려고 합니다. 예제의 itemList.html에는 추상 클래스 Item에 정의된 속성들만 표시되도록 되어있는데요. Item이 Book인 경우에는 author, isbn이 Album인 경우에는 artist, etc 등이 같이 표시되도록 하려면 어떻게 구현하는 것이 가장 좋은 방법일까요? 타임리프에서 Item의 클래스를 체크한 후(instance of 와 유사) 다운캐스팅해서 각각의 타입에만 해당하는 내용을 출력하는 방식으로 구현하고, href도 "items/{id}/edit"을 수정해서 "items/{id}/book-edit", "items/{id}/album-edit"과 같은 식으로 하는게 맞는 방법인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 실무를 하는데 궁금한게 있어 질문 남깁니다. repository 인터페이스에 생성된 메소드를 실행하는데 string으로 파라미터 값을 보내주는 예제를 보여주셨는데, 혹시 vo를 바로 보내줄수도 있을까요? 가능하다면 어떤 형식으로 가능할지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니요 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 스프링 입문 강의 수강 중 문의드리고 싶어 글을 남깁니다. 강사님 말씀대로 hellospringapplication을 실행하니 붉은 색 글씨로 아래 문구처럼 출력됩니다. Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build what is described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#0.3 WARNING: A Java agent has been loaded dynamically (/Users/user/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.15.11/a38b16385e867f59a641330f0362ebe742788ed8/byte-buddy-agent-1.15.11.jar) WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information WARNING: Dynamic loading of agents will be disallowed by default in a future release OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 자바는 openjdk oracle 23.0.1을 사용 중이고, gradle jvm도 oracle openjdk 23 버전을 사용 중입니다. 제공해주신 다른 답변들을 확인하여 자바 버전을 17로 다운그레이드 하려 했는데 project structure에서 17 버전을 선택하니 amazon corretto가 선택되었습니다. 오라클 17 버전은 따로 뜨지가 않더라고요.. 오라클 버전 외 다른 17 버전을 선택하고 gradle jvm도 조정하면 해결될까요, 아니면 다른 방법이 있을까요 ? 양질의 컨텐츠 제공해주셔서 항상 감사드립니다.
안녕하세요. 군대에서 정말 잘 듣고있습니다. 아무래도 싸지방이다보니 codespace로 동작시켰는데요. 다름이 아니라 셀레니움 부분을 공부하던 중 어찌저찌해서 driver를 연결까진 했으나, 화면이 뜨지 않아서 질문드립니다. 에러가 나는 것은 아니지만, 아마 GUI가 설정이 안되어있어서 그런 것 같습니다. 어떻게 해야할까요? 아래는 driver = webdriver.Chrome()를 codespace에 맞게 변경한 코드이고 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # ChromeDriver 경로 명시 chromedriver_path = "/usr/local/bin/chromedriver" # ChromeDriver 경로 chrome_path = "/usr/bin/google-chrome" # Chrome 브라우저 경로 (시스템에 따라 다를 수 있음) # Chrome 옵션 설정 options = Options() options.add_argument("--headless") # GUI 없이 실행 options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.binary_location = chrome_path # Chrome 브라우저 경로 설정 # ChromeDriver 서비스 설정 service = Service(chromedriver_path) # WebDriver 생성 driver = webdriver.Chrome(service=service, options=options) 아래는 이로인해 나타나는 화면입니다. driver.get() 등등의 메소드를 이용하면 title, current_url의 결과로 잘 작동되는 것을 알 수 있습니다. 하지만, 화면이 바뀌지 않아서 문제입니다. 앞에서도 언급했지만, GUI를 codespace에서 설정하는 방법을 알아야할 거 같은데 쉽지 않습니다.. GUI가 없다보니 headless를 설정할 수밖에 없었구요..
안녕하세요 선생님 얼마전 머신러닝 완벽가이드 강좌에 소프트맥스 질문 드렸던 사람입니다. 저는 소프트맥스 연산에 대한 하드웨어 가속기 설계 연구를 진행하고 있는 석사 과정생입니다. 그 때 남겨주셨던 답변에 대해 답을 드리면, Softmax의 Input 정밀도라는 것은, 마지막 FC layer를 통과한 후, Softmax층의 input으로 들어가는 값에 몇 bit를 할당할 것이냐에 관한 내용입니다. 즉 제가 알고 싶은 내용을 다시 정리해보면 다음과 같습니다. softmax의 input (혹은 output도)에 많은 bit가 할당되면, H/W resource가 커지게 되므로, 모델의 accuracy를 크게 저해하지 않는 수준에서 어느 정도의 정밀도를 유지해야 하는지 알고 싶습니다. 하여 모델에서 softmax input 전에 따로 텐서 안의 값들을 특정 소수점 자리에서 반올림 해주는 함수를 정의해 반올림을 거치거나, 기존의 FP32를 FP16으로 casting을 거치도록 하여 좀 더 낮은 정밀도에서 잘 돌아가는 지 시뮬레이션을 해보는 중이었습니다. 저의 시뮬레이션 내용은 아래에 첨부하겠습니다. (rounding의 경우는 텐서 안의 값들이 제대로 반올림이 안된 것인지, 아니면 다른 이유가 있는 것인지.. 소수점 10번째에서 rounding을 하든, 20번째, 30번째에서 하든 accuracy에 큰 변화가 없고 거의 36프로 정도를 보였습니다.) 또 일반적으로 H/W설계 시에 floating point보다 fixed point가 구현이 훨씬 간단하며, 리소스 사용량이 매우 적은데, 소프트웨어적으로 모델을 학습시킬 때의 데이터는 대부분 float 32 또는 float 64를 이용하는 것 같습니다. 이는 역전파 과정에서 높은 정밀도가 필요하기 때문이 아닐까 싶은데, 모델 학습 시에 fixed point를 사용했을 때 발생할 수 있는 문제점이 있을까요 ? (소수점 10째자리에서 반올림을 하든, 20,30째자리에서 반올림을 하든 이론상으로는 정밀도가 높아질수록 accuracy가 높아져야 될 것 같은데 제 시뮬레이션 상으로는 모두 36프로의 정확도를 보여 코드에 문제가 있는 것인지, 아니면 알고리즘적으로 문제가 있는 것인지 궁금합니다.) 또한, FP16으로 표현 가능한 최대 정밀도의 값들이 훈련 시에 자주 사용되는지, 실제로 필요한 수준의 정밀도인지 궁금합니다. softmax 층의 input으로 들어가는 logit값(?)들의 range가 어느 정도인지도 궁금합니다. 아마 모델과 사용하는 데이터에 따라 크게 달라질 것 같기는 한데, 제가 읽었던 softmax accelerator관련 논문들에서는 일반적으로 softmax의 input의 range를 [-10,10]으로 가정을 했습니다. (알고리즘 분야가 아닌 하드웨어 논문들이기는 합니다..ㅠㅠ) 허나 실제 학습 시에 floating point를 사용한다는 것은 분명 logit값이 10보다 매우 큰 값이기 때문일 것 같은데 왜 논문들에서는 저런 범위를 가정했는지 궁금하여 든 생각이 혹시 practical한 모델 내에서는 softmax로 들어가기 전에 특정 범위 안으로 들어가도록 전 처리를 해주는 layer가 따로 있는 것인지 궁금했습니다. 또 학습이 점점 진행되면서 logit 값이 학습 후반부로 갈수록 일반적으로 수렴하는 분포(?)가 있는 것인지 궁금합니다.. (epoch별로 logit 값을 출력해보고 싶은데, 아직 코딩에 익숙치 않아 난항을 겪고 있습니다) 본질적으로 softmax를 사용하는 이유가 궁금합니다.. multi classification에서 결국 하나의 class로 분류하는 것이 목적인데, 그러면 최종 logit값들 중 가장 큰 값을 선택하면 되는데 왜 굳이 softmax를 통해 확률 분포를 만든 후에 가장 높은 확률의 class로 선택하는지가 궁금합니다. (어차피 softmax를 취한 후의 maximum이나 취하기 전의 maximum이나 같을텐데) ( 시뮬레이션 내용 ) 지난 번의 코드는 깃헙에서 임의로 가져온 코드라 조금 더 제대로 된 코드로 실습하고자 이번에는 선생님의 강의 자료인 VGG_Practice 실습 코드를 이용했습니다. 실습 코드의 모델 정의 부분에서 소프트 맥스 layer 직전에 rounding, 혹은 casting하는 부분을 추가한 것 외에 달라진 점은 없습니다. 그림 1: float 16 그림 2. float 16 결과 그림 3. rounding (소수점 10째자리에서 반올림) 그림 4. rounding 결과 회로 설계 관련 연구를 진행하다 보니 AI 알고리즘에 대한 지식이 부족하여 다소 난해하게 질문드리게 된 점 정말 죄송합니다.. 또 하드웨어적 관점에서 생각하다보니 알고리즘 부분과는 다소 동떨어진 질문이 있을 수도 있을 것 같은데, 그런 부분이 있다면 죄송합니다 ㅠㅠ 몇 년전, 동아리 활동을 하면서 머신러닝에 관심을 갖게 되어 선생님의 강의를 수강하고, 잘 공부했었던 기억이 있어 이렇게 다시 찾아 질문 드리게 되었습니다. 긴 내용 읽어주셔서 감사드립니다..