728x90 Data Engineering20 큐(Queue)를 이용한 비동기(Async) 작업 처리 속도 및 확장성 개선 데이터 엔지니어 인턴으로 입사해 데이터 파이프라인 작업을 하다보니 어떻게 작업을 효과적으로 할 수 있을 지에 대한 고민을 많이 하게 되는 것 같다.아래는 데이터 파이프라인을 개선해 나가면서 큐를 도입했던 이유를 작성헀다. —동기 -> 비동기 맨 처음, 동기 작업으로 코드를 짠다. 하나의 input에 대해서 기대한 output이 잘 나오는가? 그것을 가장 먼저 생각했다.일련의 단위 작업들을 순차적으로 처리하는 것을 가만히 보고 있자니 느리다! 라는 생각이 들었다. 그래서 작업 속도를 개선하고자 이제 앞 작업의 완료 여부와 상관 없이 다른 작업을 병렬적으로 수행할 수 있도록 비동기 작업으로 전환하게 되었다.비동기 호출을 여러번 하면 병렬적으로 작업이 진행되기 때문에 가지고 있는 컴퓨팅 자원을 더 적극적으로 .. 2024. 10. 25. [LangChain] multi query invoke, ainvoke 속도 비교하기 MapReduce 방식으로 문서 요약 태스크를 진행하면, LLM에 많은 쿼리를 날려야 한다.그리고 그 쿼리들을 날리는 시간이 너무 오래 걸려서 문제가 됐다. 찾아보니 invoke 말고 비동기로 invoke를 실행할 수 있는 ainvoke가 있다. 여러개의 query들을 실행해야하는 상황에서, 비동기로 invoke를 실행하면 병렬로 처리할 수 있게 된다. invokedef summary(self, split_docs): ... output = map_reduce_chain.invoke(split_docs) return output임의의 문서를 요약하는 함수이다. 안에는 chunk들을 요약하는 chain이 구성되어있다.이 chain을 invoke로 실행하면, 이렇게 순차적으로 infe.. 2024. 4. 25. [LangChain] S3, MinIO Loader 구현하고 PDFParser 사용하기 s3에서는 버킷 내 파일 고유의 url을 제공한다. 허용된 시간 동안 그 url을 이용해서 파일에 접근할 수 있다. loader = PyPDFLoader("http://s3_url/어쩌구저쩌구겁나긴긴긴긴url입니다") 그래서 이 url을 이용해서 langchain에서 제공하는 다양한 PDFLoader를 사용할 계획이었으나... OSError: [Errno 36] File name too long 이런 에러가 났다! 그럴만두 한게 s3에서 제공하는 url이 진짜 길긴 하다. 근데 langchain에서 제공하는 PDFLoader는 web link나 file path만 input으로 넣어줄 수 있다. 그래서 되게 난감했다. pdf 파싱을 해야하는데, 랭체인에서는 PDFLoader로 파싱 기능을 제공하기 때문이.. 2024. 4. 12. [Kafka] Docker에서 Kafka Multi Broker Cluster 구성하기 카프카의 분산처리 기능을 이용하려면 노드가 여러개여야한다. 노드 한 개로 kafka 통신해보기는 성공을 했으니 이제 브로커를 3개로 늘려봐야겠다. 이런 그림을 원한다!! docker compose 수정 # kafka-cluster/docker-compose.yaml version: "2" services: zookeeper: ... broker-1: image: confluentinc/cp-kafka:7.3.0 container_name: broker-1 depends_on: - zookeeper ports: - 9092:9092 environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS.. 2023. 3. 22. [Kafka] Docker로 Producer, Consumer 통신하기 (Python) kafka cluster를 실행하면 compose의 broker에 접속해 직접 producer와 consumer를 통신해볼 수 있었다. 근데 나는 producer코드를 짜고 consumer코드를 짜서 각각 도커 컨테이너를 띄우고 카프카 컨테이너로 통신하고 싶었다. 이런 그림을 원한다! 그래서 아래 세 개를 network로 묶어주기로 했다. Producer 컨테이너 Consumer 컨테이너 Kafka Cluster Compose 컨테이너 docker compose에서 network 설정 # kafka-cluster/docker-compose.yaml version: "2" services: zookeeper: ... broker: ... networks: default: name: my-network se.. 2023. 3. 22. [Kafka] Docker에서 Kafka 단일 Broker Cluster 구성하기 도커이미지를 이용해서 간편하게 단일 브로커 Kafka 클러스터를 구성해보기 이미지 출처: https://www.tutorialspoint.com/apache_kafka/apache_kafka_cluster_architecture.htm 카프카를 운영하기 위해서 kafka cluster zookeeper: kafka cluster 관리 가 필요하다 Requirements Docker Hub에 있는 confluentinc의 zookeeper, broker 이미지를 사용한다. REPOSITORY TAG IMAGE ID CREATED SIZE confluentinc/cp-kafka 7.3.0 b526943eeea4 5 months ago 828MB confluentinc/cp-zookeeper 7.3.0 b3e.. 2023. 3. 22. 이전 1 2 3 4 다음 728x90