728x90

지난 포스팅에서 technical interview 단계에 대해 간단히 적어보았다.

 

Amazon Interview를 2월 15일 오전에 치뤘는데, 약 5일만에 답변이 왔다. 

 

아래 메일에서 볼 수 있듯이 합격이다!

 

 

Apple은 (사실 현재 4월까지도...) 연락이 없었기도 했고, 인터뷰 프로세스가 굉장히 느린데 (심지어 recruiter도 엄청 느린편이다) 비해 Amazon은 정말 일사천리로 이뤄졌던 것 같다.

 

외국의 한국 기업이라는게 실감이 날 정도였다.

 

감사하게도 이렇게 Amazon Ph.D internship에 합격을 하게 되어 이번 2024 summer 인턴을 5월부터 진행하게 될 기회를 얻었다. 

 

현재는 Amazon으로부터 internship 동안의 re-location 비용을 지원받아서 accommodation을 원격으로 계약한 상황이고, visa confirm을 기다리고 있으며, 이 작업이 끝나면 온라인으로 계좌를 개설할 수 있을 것 같다. 

 

이렇게 또 성장할 기회를 얻은 것 같아 감사하고, 더 많은 것을 큰 곳에서 느낄 수 있음에 하루하루 감사하게 생각하고 살아야겠다.

 

아직 절반도 지나지 않았지만, 2024년은 많은 성장을 할 수 있는 해인 것 같고, 앞으로도 더 그랬음 좋겠다.

 

이렇게 Amazon Ph.D internship apply 관련해서 포스팅을 종료할까 한다.

 

궁금한 사항 관련해서는 댓글로 질문시 최대한 자세히 답변드릴 수 있도록 하겠다!

728x90
728x90

잘 정제된 음성 데이터셋의 경우 (특히 딥러닝 음성인식 및 오디오 처리 학습용의 경우) 거의 Mono channel로 공개가 되어있다.

 

하지만 다양한 실환경에서 녹음된 오디오 데이터셋의 경우, 녹음 기기에 따라 2이상의 channel로 구성된, Stereo channel로 공개가 된 데이터들이 많다.

 

간단하게 아래와 같이 음성을 로드하게 되면

import torchaudio
import torch

waveform = './test.wav'
y, sr = torchaudio.load(waveform)

 

y의 size를 출력해보면, 예를 들어, (2, 100) 과 같이 나올 수가 있다.

 

이를 Stereo channel이라고 한다.

 

간단하게 아래의 그림을 보면 이해가 쉽게 될 것 같은데, stereo는 채널 별 들리는 소리가 약간 다른 반면, mono는 stereo의 평균을 낸 것으로 간주할 수 있다.

https://soundskrit.ca/2023/06/26/stereo-sound-vs-mono-explained/

 

우리가 해결하고자 하는건, 어쨋든 n-channel 이상의 waveform에 대해 평균을 내주어 mono channel로 만드는 것으로 간주할 수 있다. 

 

아래와 같이 해결하면 된다.

 

import torchaudio
import torch

waveform = './test.wav'
y, sr = torchaudio.load(waveform)
waveform_mono = torch.mean(y, dim=0).unsqueeze(0)

 

위와 같이 진행하면 waveform_mono는 (1, 100)의 형태로 얻어질 수 있다.

728x90
728x90

Interview preliminary

 

1차 코테 합격 이후 원하는 날짜로 1:1 research meeting을 잡게 되었는데,

 

내 interviewer는 Research Scientist였고, AWS Seattle에서 근무중인 인도인이었다.

 

면접 전부터, 평소에 인도 영어가 어려운 것을 잘 알고 있어서 걱정이 많이 되었다.

 

Apple과 마찬가지로, 나의 research works에 대한 presentation을 30분 정도의 분량으로 준비하였다.

 

사실 Amazon 관련해서는 크게 면접을 준비하지 못하였다.

 

당시에만 하더라도 나는 Apple을 나름 잘 봤다고 생각했고, 높은 확률로 인턴이 될 것이라고 생각했기 때문에

 

또 일이 굉장히 바쁜 시기라서, 면접 전날 간단하게 DL/ML 관련 개념만 익혔고, 

 

Amazon Principle Leadership (LP) 관련 주제가 무엇이 있는지 정도만 체크하였다.

 

관련해서, 다른 빅테크와는 달리 Amazon은 LP 관련하여 항상 면접에 나온다고 들었는데, 

 

가장 많이 물어보는 문제는 "Tell me about a time when you took on something significant outside your area of responsibility" 혹은 "Tell me about the time that you solve a complex problem with a simple solution" 와 같은 문제들이다. 

 

사실 LP 관련 문제가 가장 난해했는데, 일단 영어를 잘 들어야하고 (이건 그냥 당연한거다) 빠른 시간내에 어떻게 썰을 잘 풀지 고민해야하고, 사실에 근거해서 얘기를 해야 거짓말 티가 안나기 때문에, 

 

Interviewer로부터 주어진 문제에 대해 나의 스토리를 잘 풀어서 설명하는 스킬이 중요한 것 같다. 

 

Amazon은 특히 STAR 형식으로 답변을 하는게 좋다고 하는데, Situation, Task, Action, Result, 즉 주어진 상황과 목표, 내가 취했던 행동들, 그리고 결과에 대한 순서로 질문에 답을 해야한다.

 

DL/ML 관련 문제야 늘 해왔던 것들이니까 큰 어려움이 없었는데, LP가 나는 더 어려웠던 것 같았다.

 

Interview 당일

 

예상했던 Interviewer와 약 1시간의 interview가 진행되었다.

 

순서는 간단한 자기 소개 -> ML/DL -> DL 기반 내 분야 (전반적인 음성처리) -> LP 순서로 진행했다.

 

전부 다 공유할 순 없지만, 질문 몇 개만 쓰자면

-  Ph.D 진행하면서 주로 연구했던것들에 대해 간략하게 설명해봐라 -> 논문 위주로 PPT로 보여주려 했는데 컷당하고 그냥 말로 설명하라고 하였음

- 이전에 제출했던 CV에 있는 모든 논문 내용들에 대해 세밀하게 물어보는 형식이었음

- 예를 들어 Diffusion 내용이 들어가면 이에 대한 세부적인 질문, TTS의 경우 Tacotron 1, 2에 대한 model process, mel-spectrogram의 feature extraction 전반적인 단계 등등.. 

 

LP 관련 질문은

- 학회 제출 혹은 프로젝트 마무리와 같은 데드라인을 아주 조금 남겨둔 상황인데 어떻게 해결해 나갈 것인가?
- 공동체 생활에서 생각지도 못한 문제가 주어졌을때 어떻게 해결했나? 해결했다면, 희생했나? 희생했다면, 어떤것을 하였고 무엇을 배웠는가?

 

특히 LP 관련되서 질문이 굉장히 어려웠다. 

 

예정된 60분보다 20분 더 추가되서 inteview가 진행되었고 (ML/DL 55분) (LP 15분), 답변은 괜찮게 다 했던 것 같았다.

 

마지막으로 내게 질문해보라해서 해당 팀에 대한 나의 role, 그리고 팀 소개 등에 대해 물어봤고 자세히 설명을 들을 수 있었다.

 

728x90
728x90

2023년 12월 5일 Apple과의 1차 online interview를 치룬 뒤,

 

나는 미국 New Orleans에서 열리는 NeurIPS 2023 학회에 발표를 위해 참관하였다.

 

Andrew Ng의 LLM tutorial, Apple iPhone의 speech 기술, 그 외 빅테크들의 tutorial들을 들을 수 있어서 좋았었다.

 

Poster session때는 Andrew Ng, Yann Lecun, Semi Bengio 세 분이서 대화하는 것을 지켜보다가

 

사진 한장 찍자고 부탁하여 사진도 찍게 되었다.

 

이처럼 NeurIPS 학회는 AI Top conference 중 매우 인기있는 학회이며, 그에 따라 수 많은 전세계 회사 및 빅테크들은 학회 부스에 인재 영입을 위해 홍보를 진행한다.

 

당시 Gemeni가 나올 때 였는데, Google과 Deepmind 부스 쪽에서 Jeffry Dean을 만나볼 수 있게 되어서 큰 영광이었다.

 

이후 부스를 다 돌며 가방도 받고, 기타 아이템들을 쓸어 담다가,

 

아마존 부스에 가서 가방을 받은 뒤 recruiter에게 지원하는거 관심 있다고 하였다.

 

Recruiter는 미니 포스터를 주면서 이곳에 들어와 지원하라 하였고, 그렇게 숙소로 돌아가 맥주한잔 마시면서 Apple에다 지원할 때 작성해둔 CV를 첨부하여 신청하였다.

 

그리고 한 해가 지나고, Apple 2차 interview를 준비하던 도중, Amazon에서도 연락이 왔다.

 

Amazon은 직군이 여러개가 있는 것 같다. Research Scientist, Software Engineer, Applied Scientist 등등이 있는 것 같다.

 

이 중 내가 연락 받은것은 Amazon Applied Scientist Ph.D. Research Internship이다.

 

Coding Assessment를 보라는 메일 내용이었고, 이후 recruiter로부터 전반적인 amazon recruit process에 대한 내용을 전달 받았다.

 

당시에 Apple interview 준비하느라 LeetCode를 계속 보고 있었기에,

 

Apple interview를 끝낸 뒤 Amazon Coding Test를 바로 볼 수 있었다. 

 

그러니까 한 날에 Apple interview 2개와 Amazon coding test 1개를 다 치룬 셈이다...

 

70분 간 푸는 시간이 주어졌고, 2개의 문제가 주어졌다.

 

문제가 뭐였는지 잘 기억은 안나는데 LeetCode easy 1개, medium 1개였다.

 

Easy 문제는 모든 테스트 케이스를 다 통과하였고,

 

Medium에서는 20개 중 5개? 정도만 통과한 뒤, 제출하였다.

 

당시에 피곤한 것도 있었지만, Apple 면접을 나쁘지 않게 봤던 것 같아서... 뭔가 될대로 되라지 식으로 봤던 것 같았다.

 

Amazon Coding Assessment를 끝낸 뒤, 다음 phone interview는 언제 볼 거냐는 메일이 바로 왔었고,

 

내게 편한 시간으로 2차 phone interview를 잡도록 하였다.

 

그리고 하루 뒤에 바로 답변을 받을 수 있었다.

 

OK. Let's talk about our phone interview

 

1차에서 합격한 셈이다.

728x90
728x90

첫 번째 technical interview가 끝나고 약 15분 정도 쉬는 시간이 주어졌다.

 

100% 만족을 하진 못하였기에, 큰 기대는 하지 말고 좋은 경험을 쌓자는 생각으로 mind control 진행한 뒤

 

두 번째 interview에 임하였다.

 

2) 45분 간 Research deep-dive (hiring manager)

 

Recruiter는 마지막 interviewer의 이름을 사전에 알려주었다.

 

그렇기에 나는 면접관의 정보를 google scholar에 검색하였고,

 

최근 연구 결과들에 대해 논문을 살짝 추려 읽을 수 있었다.

 

운이 좋게도, 현재 회사에서 하는 일과 면접관이 작성한 논문의 내용이 같은 주제라서 흥미롭게 읽을 수 있었다.

 

면접 시작 이후 서로 자기소개를 간단하게 하였고, 최근 내가 어떠한 연구와 일을 하는지에 대해 간략히 얘기하기 시작하였다.

 

회사에서 Speaker separation 관련하여 verification에 집중한다고 말을 하였고, 번외로 respiratory sound classificaton과 depressive detection 일도 한다고 하였다.

 

그리고 verification 관련하여, 최근 논문을 찾던 도중 면접관의 논문을 읽게 되어 기쁘게 생각하고,

 

연구 내용이 매우 흥미롭고 practical 하게 생각한다고 말을 하였다. 

 

자연스럽게 면접관의 논문에 대해 약 5분 정도 얘기를 하였는데, 썩 나쁘지 않았다.

 

역시 연구자들은 본인이 작성한 논문을 남이 얘기할 때, 가장 행복해하는 것 같다.

 

이후 에전에 내가 만든 portfolio를 바탕으로 briefly 하게 연구 소개를 부탁하여, 12월에 사용하였던 자료를 기준으로

 

최근부터 과거로 흘러 가는 top-down 방식으로 소개하였다.

 

특히 면접관은 음성 인식, Self-supervised speech representation learning, Masking strategy, Trustworthy AI, Transformer의 이점, AST, Diffusion 등등 ML/DL background와 내가 직접 해왔던 연구들에 대해 심도 있는 질문들을 하였다.

 

40분 가량 내게 질문하였고, 남은 5분 간 본인에게 질문할 기회를 주었는데,

 

박사 인턴을 진행하게 될 경우 어떠한 프로젝트가 할당 될 것인지, paper & product leve 중 무엇에 focusing 해야할지 등에 대해 물어보았다.

 

비록 Technical interview는 잘 보진 못하였지만, 마지막 interview는 느낌이 좋았고, 특히 hiring manager 직책을 맡고 있기에 최종 결과가 더 기대가 되는 부분이었다.

 

면접을 치룬지 약 2주가 지났고, 아직 답변을 못 받은 상황이다. 

 

확실히 미국이 국내와는 다르게 굉장히 오래 걸리는 것 같지만, 미국에서는 이게 굉장히 일반적이라고 한다.

 

반대로 답변이 늦는 다는 것은, 면접관들이 고민하고 있다고 생각할 수 있기에, 약간은 기대해볼만 한 것 같다.

 

되든 안되든 최종 결과와 함께 최종 글에서 마무리를 지어야겠다.

728x90
728x90

이전 글에 포스팅 했듯이 아침부터 인터뷰 2개를 진행하였는데

 

1) 45분 간 ML Collaborative Coding session

2) 45분 간 Research deep-dive (hiring manager)

 

위의 순서로 진행하였다.

 

1) ML Collaborative Coding Session

 

위 interview 같은 경우, recruiter에게 더 자세한 정보를 달라 하여 물어보았는데

 

파이썬 기본 프로그램이나, DL/ML 문제가 나올 것이라고 하였다.

 

당연히 나는 python basic 코드가 나올 줄 알았고, 

 

Google에 인턴 offer 받은 지인 말로는 easy~medium만 풀 수 있어도 충분하다고 하였기 때문에

 

LeetCode에서 easy 문제로만 풀어보았다.

 

지금이야 더 이상 LeetCode에서 코드 문제를 풀지 않고 있지만...

 

당시 약 5일간 회사 일 하면서 준비하느라 너무 정신이 없었고,

 

특히 solution을 보면 엄청나게 자괴감이 들곤 하였다.

 

특히 머리 좋은 인도 친구들이 푼 문제를 보고는,

 

아 나는 반드시 이번 interview가 끝나더라도 하루에 한 문제씩 꼭 풀어야지 라고 다짐하였다.

 

당시에는 그랬는데 지금은 못 풀고 있는 것 같다.

 

어떻게든 시간 내서 풀어봐야겠다.

 

다시 돌아와서, 그리하여 약 5일간 30~50개의 easy 문제를 위주로 풀었고,

 

이해가 안되는 것은 그냥 답을 외우려 하였다.

 

특히 나는 LinkedList가 너무 어려워서, 집중적으로 그냥 "외웠다"

 

1차 Interview에서, 면접관은 Cornell 박사 출신의 엘리트였는데,

 

면접관: "너 K-means 알고리즘에 대해 알아? 설명해봐"

 

나: "K-means 및 KNN은 unsupervised learning 중 많이 사용되는 알고리즘 중 하나로써 ~"

 

면접관: "좋아. 개념을 알고 있어서 다행이네. 오늘 우리가 집중할 것은 K-Means 구현에 대해 진행해볼거야. 일반적으로 K-means는 이러이러한 수식을 기반으로 iteration해서 수렴하게 돼. 맞지? 이걸 같이 pseudo code로 구현해보자~"

 

이러한 식으로 문제가 주어졌고, 주어진 시간 내에 면접관에게 설명 및 질문을 해가며 문제 해결을 하는 시간이었다.

 

코드를 왜 이런 식으로 작성했는지 설명을 해가며 다음 단계로 넘어가고 진행을 하였다.

 

아쉽지만 100% 완벽하게 풀지는 못하였고, 아쉬움이 많이 남는 technical interview였다.

728x90
728x90

sh 파일을 이용해서 학습 및 평가를 돌리는 경우가 많은데,

 

이 sh 파일에 띄어쓰기 혹은 줄 바뀜 등, 에러에 의하여

 

shell script error expecting "do" 에러가 뜨는 경우가 있다  

 

이는 해결하기 상당히 귀찮은 문제인데, 인터넷에 자꾸 찾아보다가 매번 까먹어서 여기에다가 올려둔다

 

파일명이 train.sh 일 때

 

cat train.sh | tr -d '\r' >> new_train.sh

 

 

이렇게 하면 동일한 파일 구조내에 new_train.sh 를 얻게되고, 

 

이를 원래 파일에 덮어 씌우면 된다

728x90
728x90

Huggingface, Transformers 등 사용하다 보면, 나는 인자를 잘 주고 있는 것 같은데 warning 이 뜨는 경우가 많다

 

보통 이러한 오픈 소스들에서는 logger를 사용하여 warning을 사용자에게 출력시키는데 계속 반복되면서 출력되면 학습 진행률을 보기가 힘들다

 

아래처럼 간단하게 3줄로 처리가 가능하다

 

import logging
logging.disable(logging.INFO) # disable INFO and DEBUG logging everywhere
logging.disable(logging.WARNING) # disable WARNING, INFO and DEBUG logging everywhere

 

main.py 맨 상단에 이렇게 코드를 넣어두면, 연결된 모든 library 에서도 자동적으로 logger를 turn off 해준다

 

728x90

'Program > Python' 카테고리의 다른 글

pip freeze path 문제  (0) 2023.06.22
numpy를 이용한 연속적인 중복값 제거  (0) 2021.01.22
ImportError: cannot import name 'main' pip  (0) 2019.10.08
pip와 pip3 차이  (2) 2018.04.12
Ubuntu Python2, Python3 버전 관련  (0) 2018.04.12
728x90

23년 12월 5일에 1차 면접을 보고, 10일에 미국 학회에 출장을 가게 되었다.

 

해당 학회에서는 다양한 빅테크들이 부스를 열고 채용 홍보를 하였는데, Apple도 그 중 하나였다.

 

당시 부스에 방문하여 채용 담당자에게 내 현재 상황에 대해 공유 했고,

 

원래 이렇게 답변 없이 오래 걸리는 것이 당연하냐고 물어보았다. (당시 1주일 정도 된 것 같다).

 

이에 대해 미국에서는 굉장히 흔한 일이라고 하였다.

 

그렇기에 1주일 간 미국 학회 출장을 잘 즐기다가 귀국해보니 12월 20일 쯔음 되었고, 31일 까지 연락이 오지 않았다.

 

즉, 23년 내에는 연락이 오지 않았었다.

 

보통 후기들이 2-3주 정도 걸리는 것을 감안하여, 나도 그 정도로 걸릴 줄 알았는데,

 

연말이라서 바쁜가보지.. 싶다가도 또 연락이 안되니까 그냥 떨어졌다고 생각했다.

 

이후 24년이 되고 국내 기업에서 인턴을 시작했는데, 1월 중순이 되어도 연락이 오지 않기에 100% 떨어졌다고 직감하였다.

 

그래서 본격적으로 현재 인턴십 중인 works에 대해 내부 프로젝트를 엄청 늘렸다.

 

그러던 도중 애플에게서 1월 말에 연락이 왔다.

 

12월 5일 면접 이후 약 50일 만에 연락이 온 것이다.

 

12월은 일 하는 기간이 적었고, 여러 국제 컨퍼런스에 인터뷰어들이 참여를 하다 보니 시간이 부족했다는 것이다.

 

그래서 답변이 늦음에 미안하다는 말과 함께, 아직도 애플 인터뷰에 관심이 있고 가능하다면, 다음 단계로 넘어가자고 연락이 왔다.

 

바로 그 주 혹은 다음주 중 가능한 날짜를 요청 받았고, 최대한 빠르게 가능한 날짜에 대해 답변하였다.

 

다음 인터뷰는 2개가 연달아 한 날에 몰아서 본다고 하였는데,

 

1) 45분 간 Research deep-dive (hiring manager)

2) 45분 간 ML Collaborative Coding session

 

이렇게 총 2개의 인터뷰가 주어진다고 하였다.

 

코딩 테스트를 따로 준비한 것이 아니라서 굉장히 난감했다.

 

궁금하여 recruiter에게,

 

나 진짜 애플에서 일하고 싶어서 그러는데 면접을 정말 잘 보고 싶어서 그런다.

 

그래서 어떠한 식으로 coding session이 행해지는지 궁금하다.

 

알려 줄 수 없겠냐 라고 메일보냈다.

 

이에 대해 Research Deep-Dive는 지원자의 research work에 대해 인터뷰가 될 것이며,

 

또한 인턴십 프로젝트로 진행할 work에 대해 assess가 이뤄질 것이라고 하였다.

 

대화로만 이뤄지며, presentation material은 필요 없다고 하였다.

 

Coding session은, general coding question과 함께 ML 기초 및 알고리즘에 대해 문제가 주어질 것이라고 하였다.

 

Code-share application을 통해 collaboration으로 진행될 것이라고 하였다.

 

가능한 날짜를 답변하고 나니, 하루만에 다음 interview 일정이 잡혔다.

728x90
728x90

빅테크 인턴 면접은 일반적으로 다음과 같다고 한다. (지인에게 들은것, 내가 2번 본 것 고려)

 

1. 서류 지원

- 빅테크는 전세계에서 지원자들이 많기 때문에 사실 서류에서 셀렉되는 것도 힘들다고 한다. 물론 실력이나 논문 실적이 많으면 충분히 가능할 것이다!

- 지인 중 추천자가 있으면 서류 -> recruiter task로 바로 넘어갈 수 있는 것으로 알고 있다.

 

2. High-level interview

- 본인에 대한 소개와 현재까지 진행한 연구등에 대해 high-level로 소개하는 단계이며, recruiter와 면접이 될 수도 있고, 아님 일하게 될 팀원과 진행할 수 있다.

 

3. Technical interview

- Coding Assessment가 이뤄지는 단계이다. LeetCode 등에서의 알고리즘이나 도메인 관련 알고리즘 푸는 문제가 나올 수 있다. 면접관과 면접자는 동일한 사이트에서 코딩 테스트가 진행되는데, 보통 면접관이 면접자에게 말로 문제를 주고, 면접자는 질문을 통해 문제를 푸는 단계로 이루어져있다.

- https://coderpad.io/ 사이트와 같은 곳에서 코딩테스트가 이뤄진다.

 

Coding Interview & Technical Assessment Platform - CoderPad

Hire better devs with CoderPad's live coding interview & technical assessment platform. Filter candidates based on their coding skills, in 41+ languages.

coderpad.io

 

4. Research Deep Dive

- 일하게 될 팀의 hiring manger 혹은 senior researcher와의 면접 단계이다.

- High-level 보다 더 깊게 파고들어서 연구에 대해 얘기를 나눈다.

- 딥러닝의 경우 일반적인 ML/DL 알고리즘, Research 관련 질문을 받을 수 있다.

 

이 중 Apple 1차 면접은 위에서 2번에 해당한다.

 

면접관은 Real American, 미국인이었고, 애플에서 약 10년정도 일했다고 하였다.

 

주로 음성처리 쪽으로 서비스 하는 일과 연구를 병행한다고 하였다. 

 

서로 5분정도 자기소개를 하였고, 면접관은 나에게 high-level로 현재까지 진행한 연구 및 논문에 대한 소개를 해달라고 하였다.

 

이전에 만들어둔 포트폴리오가 있어서, can I briefly introduce my research using a PPT file?  요청하여 흔쾌히 ok를 받아서 편하게 진행하였다.

 

시간이 많지 않았기에 약 20분 정도 간략하게 소개를 하였는데, 발표를 다 하고나니

 

"진행했던 연구 중 어떤 연구가 가장 자랑스러운가? 선택한 이유는 무엇인가?" 라는 질문을 받았다.

 

면접관의 질문이 모두 끝난 뒤 내게 질문해보라 하길래 애플 문화에 대해 간략하게 물어보며 면접은 끝났다.

 

그리고 한 해가 지났다.

728x90

+ Recent posts