我的服务在运行时需要一些大文件(~100MB-500MB)这些文件可能会偶尔发生变化,我不介意重建我的容器并在发生时重新部署它.
我想知道什么是存储它并在构建期间使用它的最佳方式,因此团队中的任何人都可以更新容器并重建它.
到目前为止,我最好的想法是将这些大文件存储在git LFS中,用于每个版本的不同分支.这样我就可以将它添加到我的Dockerfile中:
RUN git clone -b 'version_2.0' --single-branch --depth 1 https://...git.git
Run Code Online (Sandbox Code Playgroud)
这样,如果这些大文件发生变化,我只需要version_2.0 在Dockerfile中更改,然后重建.
还有其他推荐的方法吗?我考虑过将这些文件存储在Dropbox中,并wget在构建期间使用链接获取它们
PS - 这些大文件是某些Deep-Network的权重
编辑 - 问题是在docker中存储大文件的合理方式,这样一个开发人员/团队可以更改文件和匹配代码,并且会记录(git)并且可以轻松地使用,甚至可以由其他团队部署(因此,只是本地PC上的大文件坏了,因为它需要发送给另一个团队)
我试图使问题尽可能重现。因此,这是docker命令:
docker run --name headless_test -ti python:3.6-jessie /bin/bash
Run Code Online (Sandbox Code Playgroud)
在docker内部执行以下行:
apt update && apt install -y git xvfb xorg-dev cmake
pip3 install glfw
mkdir /projects
git clone https://github.com/glfw/glfw.git /projects/glfw
cd /projects/glfw
cmake -DBUILD_SHARED_LIBS=ON .
make
export PYGLFW_LIBRARY=/projects/glfw/src/libglfw.so
xvfb-run python -c "import glfw; glfw.init(); glfw.window_hint(glfw.VISIBLE, False); glfw.create_window(100, 100, 'hidden window', None, None)"
Run Code Online (Sandbox Code Playgroud)
失败并显示以下错误:
GLX: Failed to find a suitable GLXFBConfig
Run Code Online (Sandbox Code Playgroud)
执行xvfb-run glxinfo(在安装之后mesa-utils)将返回以下内容:
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Error: …Run Code Online (Sandbox Code Playgroud) 我正在尝试自己编译Microsoft CRT 11(与VS2012一起提供的版本).
我知道在VS2008之前,这个动作完全由微软支持:
http://msdn.microsoft.com/en-us/library/k9a8ehy3(v=vs.90).aspx
但是自从VS2010以来你不应该再这样做了,我知道风险(主要是 - 编译错误,并且遇到无法解决或解决的问题)
我使用VS附带的以下目录作为输入代码和头文件:
Code:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src
Headers:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
C:\Program Files (x86)\Windows Kits\8.0\Include\shared
C:\Program Files (x86)\Windows Kits\8.0\Include\um
C:\Program Files (x86)\Windows Kits\8.0\Include\WinRT
Run Code Online (Sandbox Code Playgroud)
(到目前为止,我所做的唯一更改是从项目中删除一些MSIL源)
大多数代码已经编译.但我无法编译该文件
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\crt\src\assert.c
Run Code Online (Sandbox Code Playgroud)
由于错误:
error C3861: '_ReturnAddress': identifier not found
Run Code Online (Sandbox Code Playgroud)
如果我加
#include <intrin.h>
Run Code Online (Sandbox Code Playgroud)
它解决了.但我认为如果不直接更改代码,它应该可以解决.
当然,我经常面临新的挑战.但我认为当前的解决方案是修复头目录的包含顺序.使用头目录的顺序是什么?
我知道应用 3d 旋转的常见方法是滚动,然后是俯仰,然后是偏航。
我知道,只要你选择了一个顺序并坚持下去,顺序并不重要。
但这似乎与直观的方式相反,如果我要求你解释你的脸面向哪里或你将相机指向哪个方向,你可能会从偏航(你看的一侧)开始,然后是俯仰(你看起来有多高\低),然后滚动(如何旋转它)。
有什么解释为什么它是常用的命令吗?
我需要找到一个随机颜色,给定一个特定的种子号 - 快。两次给出相同的 ID,应该返回相同的颜色。
我这样做了:
def id_to_random_color(number):
random_bytes = hashlib.sha1(bytes(number)).digest()
return [int(random_bytes[-1]) / 255, int(random_bytes[-2]) / 255, int(random_bytes[-3]) / 255, 1.0]
Run Code Online (Sandbox Code Playgroud)
问题是多次计算数字的 sha1 总的来说非常慢。(我使用这个功能大约 10 万次)
编辑:我使用散列函数的原因是我希望对于接近的数字使用不同的颜色
例如id_to_random_color(7)应该与id_to_random_color(9)
我有一个与此模型类似的模型:
class Person(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
field1= models.IntegerField(null=True)
field2 = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)
至少一个字段,field1或者field2不能为null。如何在模型中验证?
我正在使用PyOpenGL + glfw进行渲染。
尝试在无头计算机(例如服务器)上执行相同操作时glfw.init()失败:
glfw.GLFWError: (65544) b'X11: The DISPLAY environment variable is missing'
Fatal Python error: Couldn't create autoTLSkey mapping
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
我发现了有关无头渲染的一些信息,但仅在直接使用OpenGL而不是通过python时才找到
编辑:我了解,也许glfw无法支持它。没有glfw但有其他东西的解决方案也可以工作...
我需要模糊图像的特定区域。我得到图像和描述图像中需要模糊的区域的蒙版。它可以工作,但比预期慢一点,因为我需要模糊数十张图像。
这是我使用的代码:
def soft_blur_with_mask(image: np.ndarray, mask: np.ndarray) -> np.ndarray:
assert len(mask.shape) == 2, mask.shape
# Create a blurred copy of the original image. This can take up to 1-2 seconds today, because the image is big (~5-10 Megapixels)
blurred_image = cv2.GaussianBlur(image, (221, 221), sigmaX=20, sigmaY=20)
image_height, image_width = image.shape[:2]
mask = cv2.resize(mask.astype(np.uint8), (image_width, image_height), interpolation=cv2.INTER_NEAREST)
# Blurring the mask itself to get a softer mask with no firm edges
mask = cv2.GaussianBlur(mask.astype(np.float32), (11, 11), 10, 10)[:, :, None]
mask = …Run Code Online (Sandbox Code Playgroud) 我的模型是在 Keras 中编写和训练的。我正在尝试将其用于生产中的推理。我收到包含(path_in, path_out).
我显然可以使用:
BATCH_SIZE = 10
batch_messages = []
while True:
while len(batch_messages) < BATCH_SIZE:
msg = sqs.read_messsage()
batch_messages.apend(msg)
assert len(batch_messages) == BATCH_SIZE
batch = np.array([read_image(msg.path_in) for msg in batch_messages])
output_batch = model.predict(batch)
for i in range(BATCH_SIZE):
write_output(output_batch[i], path=batch_messages[i].path_out)
batch_messages = []
Run Code Online (Sandbox Code Playgroud)
问题是代码浪费了大部分时间从 SQS 读取,从磁盘读取图像并在最后写回。这意味着 GPU 在这段时间内一直处于空闲状态。
我知道 Keras' Sequence,但不确定它是否也适用于这种情况,以及用于推理(而不是训练)
我正在使用EFS
我想设置某种形式的生命周期规则来删除 EFS 中超过 10 天的所有文件(或者最好,但不是必需的,如果它们 10 天没有被访问)
从配置来看,似乎不可能。有什么办法可以做到这一点吗?也许使用一些 lambda 或其他东西?