비조절 공기를 사용하는 유동층 건조 공정은 투입 제품의 변동성 때문에 복잡하고 예측하기 어렵습니다. 그 결과, 최적화되지 않은 설정이 너무 자주 사용되어 재작업이 발생하고 추가 비용, 추가 작업, 생산 일정 압박 증가 등 여러 가지 문제점이 발생했습니다. 건조 매개변수를 최적화하기 위해 공기 및 온도 조건의 함수로 건조 시간을 모델링하려는 시도는 부분적인 성공에 그쳤습니다.
하지만 JMP Pro의 기능 데이터 탐색기(FDE)를 사용하여 공정 시작 후 15분 이내의 개별 제품 건조 프로파일을 모델에 포함시키면서 획기적인 발전이 이루어졌습니다. 작업자는 이 결과를 활용하여 최소 건조 시간을 예측하고 그에 따라 기계 설정을 조정할 수 있게 되었습니다. FDE를 통해 다양한 매개변수가 공정 결과에 미치는 영향을 파악하는 것은 매우 유용했습니다. 이 강연은 공정 정보를 측정하는 모든 사람에게 유용할 것입니다. 작업자가 공정 중간에 기계 설정을 조정하여 최상의 결과를 얻을 수 있도록 이러한 정보를 제공하는 방법을 보여주기 때문입니다.
안녕하세요, 이번 프레젠테이션에 오신 것을 환영합니다. 저는 올림픽의 제이콥이고, 제 동료 [이름이 잘 안 들림] 님과 함께합니다. 저희는 기능 데이터 탐색기를 활용한 건조 공정의 공정 최적화에 대해 발표할 예정입니다.
먼저 프로젝트의 배경에 대해 설명드리겠습니다. 그 후 [알아들을 수 없는 부분]께서 저희가 진행한 연구에 대한 보다 심층적인 통계 분석을 해 주실 것입니다. 흥미로운 시간이 되시길 바랍니다.
먼저 룬드벡에 대해 간략히 소개드리겠습니다. 룬드벡은 1915년부터 역사를 이어온 회사로, 뇌 건강에 전념하고 있습니다. 즉, 뇌 건강 회복에 도움이 되는 모든 종류의 의약품을 개발하고 있습니다.
전 세계 50여 개국에 약 5,400명의 직원이 근무하고 있으며, 오랜 역사를 자랑합니다. 룬드벡은 원료의약품(API) 생산부터 도매상까지, 그리고 CMO 파트너사를 비롯한 다양한 원자재 공급업체에 이르기까지 완벽한 공급망을 구축하고 있습니다. 당사 제품은 전 세계 100여 개 시장에서 판매되고 있어, 상당히 복잡한 공급망을 가지고 있습니다.
오늘은 연간 약 25억 정의 정제를 생산하는 대량 생산 시설에서 진행했던 프로젝트에 대해 이야기해 보겠습니다. 이 프로젝트는 유동층 반응기를 이용한 과립화 공정에 관한 것입니다. 유동층 반응기가 무엇인지는 잠시 후에 자세히 설명드리겠습니다.
외부에서 많은 공기가 유입됩니다. 공기는 단지 필터링만 거친 상태입니다. 그리고 저희 지역의 작은 기상 관측소에 따르면 날씨와 공기 상태는 24시간 동안 크게 변합니다.
저희 운영 담당자들이 내부 규격에 맞추기 위해 오늘 공정이나 제품을 얼마나 오랫동안 테스트해야 할지 파악하는 데 어려움을 겪고 있습니다. 여기 모서리에 JMP 수치가 조금 나와 있는데, 현재까지 저희는 전체 배치 중 26%가 내부 기준치 미만인 것으로 확인했습니다.
그건 좀 높은 수치네요. 저희는 우선 이 문제를 완화하고 저희의 훌륭한 운영 담당자들이 프로세스를 더욱 원활하게 진행할 수 있도록 도울 수 있는지부터 살펴보았습니다.
과립화 공정 또는 유동층 건조란 무엇인가요? 유동층에 젖은 분말이 있고, 그 안에 많은 양의 공기가 유입됩니다. 공기를 특정 온도로 가열한 후 일정량의 공기를 통과시켜 수분을 제거하고, 건조된 공기는 필터를 통해 배출됩니다. 이렇게 하면 유체 상태에서 에너지 손실이 최소화됩니다. 과립화 공정도 사용할 수 있습니다. 이 특정 사례에는 해당되지 않지만, 고려해 볼 만한 방법입니다.
최신 유동층 반응기에는 유입되는 공기의 습도를 특정 설정값으로 조절할 수 있는 에어컨 장치가 있습니다. 하지만 현재 저희가 사용하는 시스템에서는 그것이 불가능하며, 물리적인 제약 때문에 구매해서 추가하는 것조차 불가능합니다.
설비가 다소 오래되어서 기계에서 충분한 데이터를 얻으려면 센서를 직접 설치해야 했습니다. 그렇지 않으면 모든 결과가 종이에만 출력되는데, 이는 우리가 하려는 작업에는 최적의 방법이 아닙니다.
게다가, 우리는 이 모든 것을 수행하기 위한 모든 데이터를 수집했습니다. 유동층 데이터도 있고, 왼쪽에는 기상 데이터도 있습니다. 또한 공정 제어 데이터도 있습니다. 우리의 목표는 이 모든 데이터를 데이터 레이크로 모으는 것입니다.
게다가, 저희는 연산자를 원하는 대로 표시하고 보여줄 수 있는 간단한 애플리케이션을 만들었습니다. 이것이 바로 전체 데이터의 흐름입니다.
저희는 처음에 외부 날씨를 기반으로 얼마나 오래 지속될지 예측하는 간단한 모델로 시작했는데, 좋은 모델이 되지 못했습니다. 그래서 [들리지 않는 부분]이 함수형 데이터 탐색기를 사용하여 어떻게 더 나은 결과에 가까워졌는지 설명해 드리겠습니다.
네. 감사합니다, 제이콥. 저희는 전체 시스템을 살펴볼 수 있는 개략도를 원합니다. 제이콥이 언급했듯이, 저희에게는 매일 날씨 정보나 유동층으로 공급되는 공기에 대한 정보를 제공해 줄 수 있는 기상 관측소가 있습니다.
그러면 그 정보를 바탕으로 예를 들어 작업자 시간을 추정할 수 있습니다. 기계를 설정하고 시험 가동하고 목표치에 도달하도록 분쇄하는 데 얼마나 시간이 걸릴까요? 하지만 계절에 따른 날씨 변화와 우리가 사용하는 일부 설비, 예를 들어 여름이나 겨울에는 가동을 중단하거나 끄는 등의 요인 때문에 고려해야 할 사항이 많습니다.
이 유동층으로 유입되는 공기의 온도 변화가 매우 심했습니다. 따라서 아래쪽에 있는 기상 관측소에서 얻은 데이터나 정보만으로는 건조 시간을 예측하기가 상당히 어려웠습니다.
초기 조사 단계로, 유동층 바로 앞, 유동층으로 유입되는 공기 통로에 IoT 센서를 설치했습니다. 또한, 유동층 내부에도 제품 온도 센서와 배기 가스 센서를 설치했습니다.
이를 통해 탱크로 들어가고 유동층에서 나오는 공기의 특성을 직접 측정할 수 있습니다. 하지만 이는 방대한 양의 데이터가 필요하다는 것을 의미합니다. 시계열 데이터가 존재하며, 총 8개의 센서가 매초마다 데이터 레이크로 정보를 전송하고 있습니다.
그렇게 하면 우선 건조 과정에서 무슨 일이 일어나는지 이해할 수 있을 겁니다. 각 배치 간의 차이점은 무엇이고, 더 많은 정보를 수집할 수도 있겠죠. 궁극적인 목표는 이 데이터를 활용하여 해당 장비에서 건조 과정을 더 정확하게 예측하는 것입니다.
아이디어는 간단했습니다. 저희는 데이터 레이크에 많은 과거 데이터를 수집했는데, 그중에서 IoT 데이터와 날씨 데이터를 포함한 모든 데이터를 추출하고 싶었습니다.
그래서 저희는 모델을 학습시킨 다음, 그 모델을 저희 플랫폼인 '프로덕션 인텔리전스'에서 사용하고 싶었습니다. 첫 번째 모델은 건조를 시작하기 직전에 모든 정보를 수집해서 모델에 입력하면, 작업자가 저희가 제공하는 예측치를 바탕으로 작업을 시작하는 방식이었습니다.
더 자세히 살펴보기 전에, 저희가 보유하고 있는 IoT 데이터를 먼저 살펴보겠습니다. 앞서 말씀드린 것처럼, 저희는 지난 1년간 수집한 과거 데이터를 가지고 있습니다. 그리고 모든 센서에서 매초마다 수집되는 IoT 정보도 있습니다.
한 배치(batch)를 예로 들어 살펴보겠습니다. 이 건조 과정에서 유동층에 공기를 불어넣는데, 이때 공기 흐름이 동기화되어 목표값에서 평균적으로 일정하게 위아래로 움직입니다.
그런 다음 건조 공기 온도도 제어합니다. 그러니까 건조 과정 중에 제품 온도가 시간이 지남에 따라 어떻게 상승하는지 확인할 수 있다는 말씀이시죠? 이는 건조 시작 시점부터 경과된 시간을 기준으로 합니다.
그러면 건조 과정 동안 배기가스 온도가 어떻게 상승하는지도 확인할 수 있습니다. 아주 좋습니다. 하지만 이 배치와 다른 배치를 비교해 보겠습니다. 다른 배치로 내려가 보겠습니다.
빨간색으로 표시된 부분이 또 다른 배치입니다. 보시다시피, 이 시스템을 제어하려고 노력하더라도 건조 과정은 배치마다 다를 수 있다는 것을 분명히 알 수 있습니다.
건조기 공기 온도에 따라 건조 시간이 크게 달라질 수 있습니다. 또한 건조 프로파일에 따라서도 달라질 수 있으며, 이는 제품 온도와 배기 공기 온도 모두에서 확인할 수 있습니다. 따라서 과거 데이터와 건조 시작 직전에 수집한 데이터를 활용하여 목표 건조 시간이나 필요한 건조 시간을 대략적으로 예측하는 것은 불가능하다는 것을 분명히 보여줍니다.
건조 과정에 변동이 있더라도, 과정을 시작하기 전까지는 알아차릴 수 없습니다. 그런 다음, 그 변동을 바탕으로 "아, 내 건조 과정이 다른 경향을 따르고 있구나. 그러니 다른 프로필이 필요하겠어."라고 말할 수 있습니다.
그래서 우리는 건조 과정 중 데이터를 활용하여 제품의 최종 상대 습도에 대한 사양을 달성하기 위한 목표치를 추정할 수 있는 두 번째 아이디어를 생각해냈습니다.
아이디어는 간단했습니다. 건조 과정을 시작하고, 건조하는 동안 8개의 센서에서 데이터를 수집하는 것이었습니다. 건조 과정 중 약 15분 동안 데이터를 수집한 다음, 그 데이터를 분석하거나 구축한 모델에 입력합니다. 15분이 지나면 작업자에게 예측 결과를 제공할 수 있습니다. 예를 들어 목표 온도라 하거나 10분 후에 건조를 중단해야 한다는 등의 예측을 할 수 있습니다.
이 예측은 이제 건조 성능과 해당 특정 배치에 직접적으로 기반하며, 사전에 가정한 조건에 기반한 것이 아닙니다.
어떻게 해야 할까요… 저는 이 방법을 다시 사용하겠습니다. JMP의 장점은 시계열 데이터를 분석하는 데 매우 강력한 도구, 특히 함수형 데이터 탐색기를 제공한다는 점입니다.
아쉽게도 제가 알기로는 현재로서는 이 기능은 개발 단계에서만 사용할 수 있습니다. 시계열 데이터를 분석하는 데 매우 강력한 도구입니다.
예를 들어, 저는 건조 프로파일에서 배치별 차이점을 살펴보려고 합니다. 데이터 탐색기 기능을 사용하면 되죠. 예를 들어, 제 제품을 살펴보고 싶다고 가정해 보겠습니다. 그러면 경과 시간과 배치 정보가 IT 기능으로 표시됩니다.
이 애플리케이션은 시간 경과에 따른 모든 배치 데이터를 살펴보고, 그 프로필에서 전반적인 추세를 파악하는 데 도움을 줍니다. 각 배치를 명확하게 구분하고 모든 프로필을 개별적으로 비교할 수 있습니다.
제가 하고 싶은 것은 이러한 신호 각각의 추세 또는 특징을 추출한 다음, 이를 모델의 입력으로 사용하여 목표값을 예측하는 것입니다.
앞서 말씀드린 것처럼, 이 특정 사례에서는 50분 동안의 데이터를 수집하고, 그 추세 또는 프로필을 기반으로 목표치를 예측하는 것이 목표였기 때문에, 제가 데이터를 살펴보는 시간 범위를 제한해야 할 것 같습니다.
이 기능을 사용하면 필터를 통해 데이터를 자르는 아주 좋은 옵션이 있습니다. 예를 들어, 이 경우에는 15분 단위로 데이터를 보고 있습니다. 또한 분석 전에 데이터를 더 깔끔하게 정리하기 위해 처음부터 범위를 조금 더 좁히고 싶습니다. 180초에서 900초 사이의 데이터만 보면 됩니다.
네, 여기 있습니다. 이제 제가 하고 싶은 것은 이 모든 배치에서 일반적인 추세가 무엇인지 살펴보는 것입니다. 모델로 이동한 다음 직접 함수형 PCA를 실행합니다. 보시다시피, JMP는 이 모든 배치 내에서 일반적인 추세를 찾으려고 시도하고, 이를 주요 함수로 표시한 다음, 각 배치와 모든 제품의 평균 수준 간의 차이를 나타내는 다섯 개의 고유값을 추출합니다. 이 고유값을 형상 함수라고 합니다.
각 요소에 대한 매우 유용한 정보를 제공합니다. 각 배치가 평균적인 모습과 얼마나 다른지 보여줍니다. 아래 프로파일러에서 추출된 모든 FPC 구성 요소를 조작하여 각 변경 사항이 어떤 영향을 미치는지 쉽게 확인할 수 있습니다.
예를 들어, 이것이 경과 시간입니다. 그런 다음 FPC 1 구성 요소가 더 높은지 확인하고 싶습니다. 추세 또는 프로파일 측면에서 제품의 평균 제품 온도에 어떤 영향을 미칠까요? 그리고 음수 값으로 갈수록 제품 온도에 어떤 영향을 미칠까요?
간단히 말해서, FPC1 값이 높으면 해당 기간 동안 제품 온도의 평균 수준이 낮았다는 뜻이고, FPC1 값이 낮으면 평균 수준이 높았다는 뜻입니다.
각 요소가 제품 온도의 전체적인 결과, 즉 시간 경과에 따른 추세나 프로필에 미치는 영향을 개별적으로 쉽게 확인할 수 있습니다. 이제 이러한 구성 요소를 추출하여 모델의 입력으로 사용하고, 그 모델을 사용하여 목표를 예측할 수 있습니다.
결과를 '요약 저장'으로 저장할 수 있는 옵션이 있으며, 그러면 예를 들어 제가 여기에 가지고 있는 모든 FPC 구성 요소에 대한 매우 유용한 정보를 얻을 수 있습니다. 물론 각 구성 요소는 서로 다른 배치 번호와 연결되어 있습니다.
보시다시피, 이제 각 배치마다 각 FPC 구성 요소에 대한 하나의 숫자를 얻습니다. 이 숫자는 모델 구축을 위한 입력값이 됩니다. 왜냐하면 이 정보는 각 신호의 프로필에서 직접 추출한 것이기 때문입니다. 이를 바탕으로 새로운 배치가 평균적인 모습과 어떻게 다른지 알 수 있고, 그에 따라 다음 단계로 넘어갈 수 있습니다.
자, 다시 돌아가서 제가 그걸 모델링할지 한번 봅시다. 그럼 어떻게 될까요? 방금 모든 신호의 FPC 구성 요소를 모두 모았으니, 이제부터는 아주 간단합니다. 예를 들어 일반 회귀 모델을 만들거나 다른 접근 방식을 사용해서 모델을 구축하면 됩니다.
예를 들어, 여기서는 최종 신호로 상대 습도를 예측하는 쉬운 방법을 제시했습니다. 입력으로는 다양한 FC 구성 요소의 모든 조합을 사용할 수 있었습니다.
그런 다음 최종 추정치 또는 최종 모델을 만들어 시스템에 입력할 수 있습니다. 아주 간단합니다. 이 모든 모델 또는 예측은 IoT 센서에서 수집한 모든 신호의 프로필을 기반으로 하며, 이를 바탕으로 목표를 설정합니다.
이 시점부터 중요한 것은 모델을 추출하는 것입니다. 모델을 구축한 후 추출해야 하며, 이는 처음 모델 추출 과정으로 돌아갑니다. 그런데 새로운 배치에 대해 이 LPC 구성 요소를 어떻게 추출할 수 있을까요?
가장 큰 문제는 이후에는 JMP를 더 이상 사용할 수 없다는 점입니다. 제 환경에서는 AWS에서 실행되는 제품에 모든 것을 통합해야 하므로 모델과 FPC 구성 요소 모두를 추출할 수 있어야 합니다.
모델 추출 자체는 꽤 쉬워서 제가 할 수 있습니다. 하지만 FPC 구성 요소를 정확하게 추출하는 것이 상당히 어렵습니다. 안타깝게도 지금 당장은 JMP에서 이러한 구성 요소를 추출할 수 있는 간단한 방법이 없습니다. 왜냐하면 저는 지금 새로운 배치를 생성해야 하기 때문입니다.
이번 새 배치에서는 이 모델을 사용하여 어떤 구성 요소가 필요한지 추정하고 싶습니다. 이러한 구성 요소를 추출하는 매우 간접적인 방법이 있는데, 바로 FPC 구성 요소를 계산하는 기본 원리로 돌아가는 것입니다.
만약 이걸 다시 찾으면 닫을 수도 있겠네요. 네, 여기 있어요. FPC 구성 요소에서 추출한 표로 돌아가 보면, FPC 구성 요소를 사용하여 신호를 예측하는 방식, 즉 제품 결과를 보여주는 열이 있습니다.
저건 아주 간단합니다. 이 방법은 모든 데이터(저희의 경우, 입력한 모든 과거 데이터)에 걸쳐 평균 함수를 구축하려고 합니다. 그런 다음 형상 함수를 생성하고, 각 배치와 평균 형상 간의 차이를 보정하기 위해 배치에 따라 이 형상 함수를 조정합니다.
우리가 할 수 있는 것은 과거 데이터를 활용하는 것이고, 이 과거 데이터를 기반으로 시간에 따른 평균값을 추출할 수 있을 뿐 아니라, 시간에 따른 형태 함수도 추출할 수 있다는 것입니다.
이렇게 두 가지 매개변수를 얻은 후에는 해당 데이터를 추출하여 저희 플랫폼에 입력할 수 있습니다. 그런 다음 새로운 배치가 들어올 때마다 이 모델에 맞춰 데이터를 분석하고 FPC 구성 요소를 계산합니다.
어떻게 하면 될까요? 이 사례로 다시 돌아오겠습니다. 테이블을 만들 때마다 FPC 구성 요소의 요약을 추출하게 됩니다. 실제로 형상 함수도 함께 추출되는데, 여기서는 숨겨져 있을 뿐입니다. 이 모든 것들을 살펴보면, 예를 들어 형상 함수를 보면, 시간 경과에 따른 형상 함수를 계산하려는 수식이 뒤쪽에 있는 것을 볼 수 있습니다.
제가 하고 싶은 건 이 값만 직접 추출하는 겁니다. 평균값도 구하고, 시간 경과에 따른 변화 추이도 추출하고 싶어요. 좀 더 보기 쉽게 정리해야겠네요. 이제 마지막으로 이 부분을 다시 보이게 하겠습니다.
기본적으로… 그리고 이것도 추가적인 사항인데, 아마 삭제해도 될 것 같습니다. 기본적으로 추출한 테이블은 입력한 시간 범위의 중심을 기준으로 모든 형태 함수를 계산합니다.
제가 하려는 것은 데이터를 180초에서 900초 사이로 잘라낸 후, 해당 형상 함수를 추출하는 것입니다. 이 열을 업데이트하는 것만으로 간단하게 900초부터 계산할 수 있습니다. 경과 시간을 수정하면 시간에 따른 형상 함수 값을 쉽게 얻을 수 있습니다.
보시다시피, 예를 들어 첫 번째 창에서 보셨던 것과 똑같은 입력을 사용할 수 있습니다. 이제 이러한 도형 함수들을 얻었습니다. 이제 어떻게 사용할 수 있을까요? 이 모든 함수들을 하나로 모아 보겠습니다.
여기 준비된 데이터 테이블이 있습니다. 예를 들어 과거 데이터를 기반으로 제품 온도와 같은 형상 함수를 추출했고, 경과 시간도 있습니다. 이제 새 배치가 들어왔고, 테이블에 추가했습니다. 물론 새 플랫폼에서는 AWS//를 사용하게 될 겁니다. 모든 계산은 거기서 처리됩니다.
새로운 배치를 받았습니다. 100도에서 900도 사이의 온도 범위에서 얻은 신호 정보를 바탕으로, 이전에 설명했던 방정식을 다시 적용해 보겠습니다. 이제 이 모델을 구축하고 FPC 구성 요소를 추출하려고 합니다.
제가 하는 일은 간단합니다. 먼저, 각 시점의 새로운 배치에서 얻은 신호 값과 평균값의 차이를 구합니다. Episcopal에서 추출한 표에서 최소값 함수 공식을 얻을 수 있습니다. 잔차는 신호 값과 과거 데이터를 기반으로 계산한 평균값의 차이입니다. 이 값을 바탕으로 모델의 나머지 부분, 즉 이 부분을 구축하면 됩니다.
그렇게 해봅시다. 제가 만든 것은 잔차입니다. 각 함수에 대해 FPC 성분을 추출하고 싶습니다. 물론 절편은 없어야 합니다. 중심 다항식을 비활성화하여 다른 함수와 정확히 동일한 추출 결과를 얻도록 하겠습니다.
그런 다음 이 코드를 실행하고 각 형상 함수에 대한 표현식을 살펴보면 FPC 구성 요소를 나타내는 매개변수 하나를 얻게 됩니다. 이것이 과거 데이터에서 추출한 각 형상 함수를 기반으로 각 구성 요소를 추출하는 방법입니다. 그런 다음 추출된 구성 요소를 모델의 입력으로 사용합니다.
새로운 데이터셋이 들어올 때마다, 즉 새로운 배치가 들어올 때마다, 이 배치를 모델에 적용하여 FPC 구성요소를 추출한 다음, 이를 모델의 입력으로 사용합니다. 이렇게 하면 각 경우에 따라 필요한 추정치를 얻을 수 있을 것입니다.
안타깝게도 앞서 언급했듯이, 이 방법은 FPC 구성 요소를 추출하는 간단한 방법은 아닙니다. 하지만 이것이 하나의 방법입니다. 이것이 바로 우리가 시스템 환경에서 시스템 성능을 예측하기 위해 FPC 구성 요소의 기능을 활용하는 접근 방식입니다.
마지막 슬라이드는 일반적인 결론입니다. 적어도 우리 사례에서는 시스템이 노출되는 모든 변수와 시스템 내에서 발생하는 모든 상황을 고려할 때, 몇 가지 기본 입력값만으로 시스템의 상태를 예측하는 것은 매우 어렵다는 점이 분명해졌을 것입니다.
물론 가능하다면 시스템에 온라인 제어 기능을 추가하는 것이 훨씬 좋지만, 이것 또한 쉬운 방법은 아닙니다. 두 번째 옵션은 다양한 방식으로 탐색할 수 있는 기능을 활용하는 것인데, 이는 시계열 데이터를 분석하는 데 매우 유용한 도구입니다. 하지만 현재로서는 주로 제공만 가능한 상태이며, JMP에서 일부 요소를 추출하는 것도 쉽지 않습니다.
산업 현장의 대부분 시스템은 JMP에 직접 연결할 수 없는 경우가 많습니다. 이는 JMP에 있는 해당 기능의 활용도를 크게 제한합니다.
하지만 덕분에 탐험가의 관점에서 우리 공정에 대한 훌륭한 통찰력을 얻을 수 있었습니다. 실제로 문제가 어디에 있었는지, 각 배치마다 무슨 일이 일어나고 있었는지 알 수 있었죠. 이전에는 평균값 같은 것만 봤었는데, 이제는 실제로 볼 수 있게 되었습니다.
더 자세한 내용입니다.
네. 그리고 시계열 데이터도요. 프로세스 관점에서 볼 때, 분석 부분을 보는 것이 매우 흥미로웠습니다.
맞습니다. 네. 그럼, 들어주셔서 감사하고 모두 그곳에서 뵙기를 바랍니다.