QWQyyy commented on issue #5429:
URL: https://github.com/apache/openwhisk/issues/5429#issuecomment-1629290262

   I figured out that this error might stem from long running functions, my 
data processing function behaves fine when processing a tenth of the size of 
the CIFAR10 dataset, but terminates at minutes when processing the full CIFAR10 
dataset. Therefore, I guess that openwhisk has some bugs. On the surface, this 
bug is that when the function executes for more than 1 minute, it will cut off 
the client and make the function execute in the background, but the real 
situation is that it reports an error after running for several minutes. I 
think this may be a worthwhile question. @style95 
   
   Results of the:
   
![image](https://github.com/apache/openwhisk/assets/54056797/efa5b7cb-a029-43ea-9bae-0a2e1146bca8)
   
   
   No error action code:
   ```python
   import pandas as pd
   from torchvision import datasets, transforms
   import numpy as np
   from minio import Minio
   from minio.error import S3Error
   import io
   
   def main(args):
       # 转换器
       transform_train = 
transforms.Compose([transforms.RandomHorizontalFlip(p=0.5),
                                             transforms.ToTensor(),
                                             transforms.Normalize((0.485, 
0.456, 0.406), (0.229, 0.224, 0.225))])
       transform_test = transforms.Compose([transforms.ToTensor(),
                                            transforms.Normalize((0.485, 0.456, 
0.406), (0.226, 0.224, 0.225))])
       # 数据集路径
       data_path = "/dataset/CIFAR10"
   
       # 创建与MinIO服务器的连接
       client = Minio(
           "192.168.1.23:9000",
           access_key="CuZRDbhLVIIjfDp4M4p8",
           secret_key="tFDb4aoeSqlCB0bH6BoYfNvIWXqSCJQCZ6UD0Hd9",
           secure=False
       )
   
       # 创建存储桶
       bucket_name = "cifar"
       try:
           if not client.bucket_exists(bucket_name):
               client.make_bucket(bucket_name)
               print(f"存储桶 {bucket_name} 创建成功")
           else:
               print(f"存储桶 {bucket_name} 已存在")
       except S3Error as exc:
           print(f"存储桶 {bucket_name} 创建失败: {exc}")
   
       # 加载训练集和测试集
       train_dataset = datasets.CIFAR10(root=data_path, train=True, 
transform=transform_train, download=False)
       test_dataset = datasets.CIFAR10(root=data_path, train=False, 
transform=transform_test, download=False)
       # 将训练集数据保存到CSV文件
       train_data = []
       for i, (image, label) in enumerate(train_dataset):
           image_data = np.array(image).tolist()  # 转换为列表
           train_data.append([image_data, label])
           if i >= len(train_dataset) * 0.1:  # 控制训练集样本数量
               break
       train_df = pd.DataFrame(train_data, columns=['image', 'label'])
       train_csv_data = train_df.to_csv(index=False)
   
       # 将数据保存到MinIO存储中
       try:
           data_bytes = train_csv_data.encode()  # 将字符串转换为字节类型
           data_stream = io.BytesIO(data_bytes)  # 创建可读取的字节流
           client.put_object(bucket_name, "train_dataset.csv", data_stream, 
len(data_bytes))
           print(f"训练集数据已成功保存到MinIO存储,存储桶:{bucket_name},对象:train_dataset.csv")
       except S3Error as exc:
           print(f"保存训练集数据到MinIO存储失败: {exc}")
   
       # 将测试集数据保存到CSV文件
       test_data = []
       for i, (image, label) in enumerate(test_dataset):
           image_data = np.array(image).tolist()  # 转换为列表
           test_data.append([image_data, label])
           if i >= len(test_dataset) * 0.1:  # 控制测试集样本数量
               break
       test_df = pd.DataFrame(test_data, columns=['image', 'label'])
       test_csv_data = test_df.to_csv(index=False)
   
       # 将数据保存到MinIO存储中
       try:
           data_bytes = test_csv_data.encode()  # 将字符串转换为字节类型
           data_stream = io.BytesIO(data_bytes)  # 创建可读取的字节流
           client.put_object(bucket_name, "test_dataset.csv", data_stream, 
len(data_bytes))
           print(f"测试集数据已成功保存到MinIO存储,存储桶:{bucket_name},对象:test_dataset.csv")
       except S3Error as exc:
           print(f"保存测试集数据到MinIO存储失败: {exc}")
   
       result = {"res": "666"}
       return result
   ```
   
   and error action code:
   ```python
   import pandas as pd
   from torchvision import datasets, transforms
   import numpy as np
   from minio import Minio
   from minio.error import S3Error
   import io
   
   def main(args):
       # 转换器
       transform_train = 
transforms.Compose([transforms.RandomHorizontalFlip(p=0.5),
                                             transforms.ToTensor(),
                                             transforms.Normalize((0.485, 
0.456, 0.406), (0.229, 0.224, 0.225))])
       transform_test = transforms.Compose([transforms.ToTensor(),
                                            transforms.Normalize((0.485, 0.456, 
0.406), (0.226, 0.224, 0.225))])
       # 数据集路径
       data_path = "/dataset/CIFAR10"
   
       # 创建与MinIO服务器的连接
       client = Minio(
           "192.168.1.23:9000",
           access_key="CuZRDbhLVIIjfDp4M4p8",
           secret_key="tFDb4aoeSqlCB0bH6BoYfNvIWXqSCJQCZ6UD0Hd9",
           secure=False
       )
   
       # 创建存储桶
       bucket_name = "cifar"
       try:
           if not client.bucket_exists(bucket_name):
               client.make_bucket(bucket_name)
               print(f"存储桶 {bucket_name} 创建成功")
           else:
               print(f"存储桶 {bucket_name} 已存在")
       except S3Error as exc:
           print(f"存储桶 {bucket_name} 创建失败: {exc}")
   
       # 加载训练集和测试集
       train_dataset = datasets.CIFAR10(root=data_path, train=True, 
transform=transform_train, download=False)
       test_dataset = datasets.CIFAR10(root=data_path, train=False, 
transform=transform_test, download=False)
       # 将训练集数据保存到CSV文件
       train_data = []
       for i, (image, label) in enumerate(train_dataset):
           image_data = np.array(image).tolist()  # 转换为列表
           train_data.append([image_data, label])
   
       train_df = pd.DataFrame(train_data, columns=['image', 'label'])
       train_csv_data = train_df.to_csv(index=False)
   
       # 将数据保存到MinIO存储中
       try:
           data_bytes = train_csv_data.encode()  # 将字符串转换为字节类型
           data_stream = io.BytesIO(data_bytes)  # 创建可读取的字节流
           client.put_object(bucket_name, "train_dataset.csv", data_stream, 
len(data_bytes))
           print(f"训练集数据已成功保存到MinIO存储,存储桶:{bucket_name},对象:train_dataset.csv")
       except S3Error as exc:
           print(f"保存训练集数据到MinIO存储失败: {exc}")
   
       # 将测试集数据保存到CSV文件
       test_data = []
       for i, (image, label) in enumerate(test_dataset):
           image_data = np.array(image).tolist()  # 转换为列表
           test_data.append([image_data, label])
       test_df = pd.DataFrame(test_data, columns=['image', 'label'])
       test_csv_data = test_df.to_csv(index=False)
   
       # 将数据保存到MinIO存储中
       try:
           data_bytes = test_csv_data.encode()  # 将字符串转换为字节类型
           data_stream = io.BytesIO(data_bytes)  # 创建可读取的字节流
           client.put_object(bucket_name, "test_dataset.csv", data_stream, 
len(data_bytes))
           print(f"测试集数据已成功保存到MinIO存储,存储桶:{bucket_name},对象:test_dataset.csv")
       except S3Error as exc:
           print(f"保存测试集数据到MinIO存储失败: {exc}")
   
       result = {"res": "666"}
       return result
   ```
   
   The code that only differs from the reduced dataset
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to